区块链技术博客
www.b2bchain.cn

15. 三数之和 需要去重-三指针 原创

这篇文章主要介绍了15. 三数之和 需要去重-三指针 原创,通过具体代码讲解8073并且分析了15. 三数之和 需要去重-三指针 原创的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了15. 三数之和 需要去重-三指针 原创。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/8073.html。具体如下:

 //给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复 //的三元组。  // // 注意:答案中不可以包含重复的三元组。  // //  // // 示例:  // // 给定数组 nums = [-1, 0, 1, 2, -1, -4], // //满足要求的三元组集合为: //[ //  [-1, 0, 1], //  [-1, -1, 2] //] //  // Related Topics 数组 双指针   import java.util.ArrayList; import java.util.Arrays;  //leetcode submit region begin(Prohibit modification and deletion) class Solution {     public List<List<Integer>> threeSum(int[] nums) {          List<List<Integer>> ans=new ArrayList<>();          int len=nums.length;          if(nums==null || len<3) return  ans;          //排序          Arrays.sort(nums);         for (int i = 0; i <len ; i++) {             //后面都不需要判断了             if(nums[i]>0) break;             //只结束当前次循环,去重             if(i>0 && nums[i]==nums[i-1]) continue;             int L=i+1;             int R=len-1;             while(L<R){                 int sum=nums[i]+nums[L]+nums[R];                 //等于0时候内部去重                 if(sum==0) {                     ans.add(Arrays.asList(nums[i],nums[L],nums[R]));                     while ( L<R && nums[L]==nums[L+1]) L++;                     while( L<R &&nums[R]==nums[R-1]) R--;                     L++;R--;                 }                  else if(sum<0) L++;                 else R--;             }          }         return ans;     } } //leetcode submit region end(Prohibit modification and deletion) 

 

本文地址https://www.b2bchain.cn/8073.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 15. 三数之和 需要去重-三指针 原创
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们