LeetCode:三数之和

java 复制代码
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        //盛放最终的结果
        List<List<Integer>> result = new ArrayList<>();
        //先进行排序
        Arrays.sort(nums);
        //对元素进行遍历,我们转换成  -nums[i] = nums[left] + nums[right]的形式,-nums[i]作为要拼的元素始终在后面两个元素前面
        //由于要给后面两个元素留位置所以i < nums.length - 2
        for(int i = 0;i < nums.length - 2;i++){
            //如果当前元素大于0;后面的元素都比他大,不可能有两个元素加到一起等于它了
            if(nums[i] > 0){
                break;
            }
            //去重
            if(i > 0 && nums[i] == nums[i - 1]){
                continue;
            }

            int left = i + 1;
            int right = nums.length - 1;
            while(left < right){
                int sum = nums[i] + nums[left] + nums[right];

                if(sum == 0){
                    result.add(Arrays.asList(nums[i],nums[left],nums[right]));
                    //去重
                    while(left < right && nums[left] == nums[left + 1]){
                        left++;
                    }
                    //去重
                    while(left < right && nums[right] == nums[right -1]){
                        right--;
                    }
                    left++;
                    right--;
                }else if(sum < 0){
                    left++;
                }else{
                    right--;
                }
            }
        }
        return result;
    }
}

Arrays.sort(nums):对nums数组排序,使用快速排序算法,时间复杂度O(NLogN)

Arrays.asList(...):将零散的元素装进集合

相关推荐
yong999012 小时前
IHAOAVOA:天鹰优化算法与非洲秃鹫优化算法的混合算法(Matlab实现)
开发语言·算法·matlab
米粒113 小时前
力扣算法刷题 Day 42(股票问题总结)
算法·leetcode·职场和发展
浅念-15 小时前
从LeetCode入门位运算:常见技巧与实战题目全解析
数据结构·数据库·c++·笔记·算法·leetcode·牛客
CoovallyAIHub15 小时前
无人机拍叶片→AI找缺陷:CEA-DETR改进RT-DETR做风电叶片表面缺陷检测,mAP50达89.4%
算法·架构·github
田梓燊15 小时前
leetcode 142
android·java·leetcode
CoovallyAIHub15 小时前
混合训练反而更差?VLM Agent在训练前协调跨数据集标注,文档布局检测F-score从0.860提升至0.883
算法·架构·github
鸿途优学-UU教育15 小时前
教材质量——法考培训的根基与底气
算法
_深海凉_15 小时前
LeetCode热题100-最大数(179)
算法·leetcode·职场和发展
剑挑星河月16 小时前
763.划分字母区间
数据结构·算法·leetcode
小辉同志16 小时前
74. 搜索二维矩阵
c++·leetcode·矩阵·二分查找