zoukankan      html  css  js  c++  java
  • [leedcode 15] 3Sum

    public class Solution {
        public List<List<Integer>> threeSum(int[] nums) {
            //本题需要对重复数字进行考虑,主要涉及以下几处:
            //1.外层循环时,需要与前一个数进行比较,如果重复,使用 if 和continue
            //2.求target时,注意重复数字。使用while 
            //多举例子
            List<List<Integer>> res=new ArrayList<List<Integer>>();
            if(nums.length<3) return res;
            Arrays.sort(nums);
            for(int i=0;i<nums.length;i++){
                int target=0-nums[i];
                int first=i+1;
                int end=nums.length-1;
                if(i>0&&i<nums.length&&nums[i-1]==nums[i]){//判断重复数。例如-2 -1 -1 -1 0 1 1 1 1 2
                    continue;
                }
    
                while(first<end){
                    if(nums[first]+nums[end]==target){
                        List<Integer> temp=new ArrayList<Integer>();
                        temp.add(nums[i]);
                        temp.add(nums[first++]);
                        temp.add(nums[end--]);
                        res.add(temp);
                       /* first++;
                        end--;*/
                        while(first<end&&nums[first]==nums[first-1])first++;//[-2,0,0,2,2]
                     }
                             
                    if(nums[first]+nums[end]>target)
                          end--;
                    else  if(nums[first]+nums[end]<target)
                                first++;
                }
            }
              return res;  
                
        }
    }
  • 相关阅读:
    Math.pow
    css3正方体
    制作一个百度换肤效果
    排他思想
    js栈和堆的区别
    js创建对象的几种方式(工厂模式、构造函数模式、原型模式)
    短网址
    this
    作用域
    JS 函数基础
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4625651.html
Copyright © 2011-2022 走看看