zoukankan      html  css  js  c++  java
  • 每日算法练习(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; }
          }
  • 相关阅读:
    03_02_leetcode_24_删除有序数组的重复项
    03_02_leetcode_141_环形链表
    03_02_leetcode_24_两两交换链表中的结点
    Solution -「ZJOI 2014」力
    Solution -「GXOI / GZOI 2019」宝牌一大堆
    Solution -「CSP 2019」Centroid
    Solution -「CSP 2019」Partition
    Note -「Suffix Automaton」SAM
    Solution -「BalticOI 2004」Sequence
    Solution -「BZOJ 3779」重组病毒
  • 原文地址:https://www.cnblogs.com/qyx66/p/12193959.html
Copyright © 2011-2022 走看看