每日算法练习(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; }
      }
原文地址:https://www.cnblogs.com/qyx66/p/12193959.html