15.三数之和

简介: 15.三数之和

题目:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组

     

class Solution{
    public List<List<Integer>>threeSum(int[]nums){
        int n=nums.length;
        Arrays.sort(nums);
        List<List<Integer>>ans=new ArrayList<List<Integer>>();
        //枚举a
        for(int first=0;first<n;++first){
            //需要和上一次枚举的树不相同
            if(first>0 && nums[first]==nums[first-1]){
                continue;                            
            }        
            //c对应的指针初始指向数组的最右端
            int third=n-1;
            int target=-nums[first];
            //枚举b
            for(int second=first+1;second<n;++second){
                //需要和上一次枚举的数不相同    
                if(second>first +1&& nums[second]==nums[second-1]){
                    continue;                
                }        
                //需要保证b的指针在c的指针的左侧
                while(second<third&&nums[second]+nums[third]>target){
                    --third;                
                }
                //如果指针重合,随着b后续的增加
                //就不会有满足a+b+c=0,并且b<c的c,可以退出循环
                if(second==third){
                    break;                
                }
                if(nums[second]+nums[third]==target){
                    List<Integer> list = new ArrayList<Integer>();
                    list.add(nums[first]);
                    list.add(nums[second]);
                    list.add(nums[third]);
                    ans.add(list);             
                }
            }
        }    
        return ans;
    }
}


相关文章
|
NoSQL 数据可视化 MongoDB
Mac安装MongoDB
Mac安装MongoDB,其他同理,博主的设备上 macOS 13和 MongoDB 5.0
436 0
|
存储 JSON Java
protobuf在嵌入式linux下的移植及c语言调用
protobuf在嵌入式linux下的移植及c语言调用
win32编程 -- 键盘消息
win32编程 -- 键盘消息
145 0
win32编程 -- 键盘消息
C#编程-120:文件选择之OpenFileDialog控件
C#编程-120:文件选择之OpenFileDialog控件
330 0
C#编程-120:文件选择之OpenFileDialog控件
|
存储 C++
L3-002 特殊堆栈 (30 分)(STL二分)
L3-002 特殊堆栈 (30 分)(STL二分)
246 0
|
Python
Flask(6)- debug 模式
Flask(6)- debug 模式
446 0
Flask(6)- debug 模式
|
Java
适配器模式与桥接模式(2)
适配器模式与桥接模式(2)
157 0
适配器模式与桥接模式(2)
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!