我是靠谱客的博主 感动玉米,最近开发中收集的这篇文章主要介绍leetcode-剑指 Offer II 007. 数组中和为 0 的三个数【java】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

剑指 Offer II 007. 数组中和为 0 的三个数
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:

输入:nums = []
输出:[]
示例 3:

输入:nums = [0]
输出:[]

提示:

0 <= nums.length <= 3000
-105 <= nums[i] <= 105

代码:

class Solution {
        public List<List<Integer>> threeSum(int[] nums) {
          List<List<Integer>> result=new LinkedList<List<Integer>>();
          if (nums.length>=3)
          {
              Arrays.sort(nums);
              int i=0;
              while (i< nums.length-2)
              {
                  twoSum(nums,i,result);

                  int temp=nums[i];
                  while (nums[i]==temp&&i<nums.length-2)
                      i++;
              }
          }
          return result;
    }

    public void twoSum (int[] nums,int i,List<List<Integer>> result){
        int j=i+1;
        int k=nums.length-1;
        while(j<k)
        {
            if (nums[i]+nums[j]+nums[k]==0)
            {
                result.add(Arrays.asList(nums[i],nums[j],nums[k]));
                int temp=nums[j];
                while (nums[j]==temp&&j<k)
                    j++;
            }
            else if (nums[i]+nums[j]+nums[k]<0)
                j++;
            else
                k--;
        }
    }  

}

最后

以上就是感动玉米为你收集整理的leetcode-剑指 Offer II 007. 数组中和为 0 的三个数【java】的全部内容,希望文章能够帮你解决leetcode-剑指 Offer II 007. 数组中和为 0 的三个数【java】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部