• 每日算法练习(2020-1-14)


     符号位使用变量判断,1为正,0为负,使用first判断是否进入数字扫描,使用循环进行迭代,并判断数字是否越界

    代码如下:

    package com.qyx.Tree;
    /**
     * 
     * @author QYX
     *
     */
    public class StringTransactionNumber {
        public int myAtoi(String str)
        {
            int ans=0;//存储结果
            int flag=1;//存储正负号
            int first=1;//判断是否进入数字识别
            int len=str.length();
            for(int i=0;i<len;i++)
            {
                char temp=str.charAt(i);
                if(first==1)
                {
                    if(temp==' ')
                    {
                        continue;
                    }else if(temp=='+')
                    {
                        flag=1;
                    }else if(temp=='-')
                    {
                        flag=-1;
                    }else if(temp>='0'&&temp<='9')
                    {
                        ans=ans*10+(int)(temp-'0');
                    }else{
                        return 0;
                    }
                    first=0;
                }else{
                    if(temp>='0'&&temp<='9')
                    {
                            //正数是否越界
                          if(flag==1 && (ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && temp>'7')))
                                return Integer.MAX_VALUE;
                              //负数是否越界
                          if(flag==-1 && (ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && temp>'8')))
                                return Integer.MIN_VALUE;
                          ans=ans*10+(int)(temp-'0');
                    }else{
                        return flag*ans;
                    }
                }
            }
            return flag*ans;
        }
    }

     使用ArrayList进行存储,再使用Collections工具类进行排序,然后使用增强foreach循环遍历生成新链表,返回新链表头结点

    package aa;
    
    import java.awt.Frame;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class MergeList {
        public ListNode merge(ListNode l1,ListNode l2)
        {
                
                List<Integer> list=new ArrayList<>();
                ListNode L1=l1;
                ListNode L2=l2;
                while(true)
                {
                    if(L1!=null)
                    {
                        list.add(L1.val);
                        L1=L1.next;
                    }
                 if(L2!=null)
                    {
                        list.add(L2.val);
                        L2=L2.next;
                    }
                 if(L1==null&&L2==null)
                    {
                        break;
                    }
                }
                Collections.sort(list);
                ListNode first=null;
                ListNode temp=first;
                for(Integer x:list)
                {
                    ListNode node=new ListNode(x);
                    if(temp != null){
                     temp.next = node;
                 }else{
                     first = node;
                 }
                 temp = node;
                }
                return first;
            }
    }
        class ListNode {
         int val;
         ListNode next;
         ListNode(int x) { val = x; }
          }
  • 相关阅读:
    js-高级06-正则
    js-高级05-javaScript处理机制
    js-高级04-函数高级应用
    js-高级03-面向对象的继承
    js-高级02-贪吃蛇案例分析
    js-高级01面向对象及创建对象
    js-API 06 高级动画二
    js-API 05 高级动画
    对象数组 数组对象 增删改查 数组
    jQuery ajax请求 一般请求和自定义请求
  • 原文地址:https://www.cnblogs.com/qyx66/p/12193959.html
Copyright © 2020-2023  润新知