Leetcode||15.3Sum
来源:互联网 发布:知乎 陌生人 编辑:程序博客网 时间:2024/06/05 10:12
15. 3Sum
- Total Accepted: 158805
- Total Submissions: 777436
- Difficulty: Medium
- Contributors: Admin
Given an array S of n integers, are there elements a,b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]这题是看着网上的解法,结果还是暴力枚举,剪枝不太会,有解法
代码如下:
暴力枚举
public class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> rst = new ArrayList<List<Integer>>();Arrays.sort(nums);for(int i = 0; i < nums.length-2; i++){ if (nums[i] > 0) { return rst; } if(i>=1 && nums[i] == nums[i-1]){ continue; } for(int j = i+1; j < nums.length-1; j++){ if(j>= i+2 && nums[j] == nums[j-1]){ continue; } for(int k = j+1 ; k < nums.length; k++){ if(k>=j+2 && nums[k] == nums[k-1]){ continue; } if(nums[i]+nums[j]+nums[k]<0){ continue; } else if(nums[i]+nums[j]+nums[k] == 0){ List<Integer> temp = Arrays.asList(nums[i],nums[j],nums[k]); rst.add(temp); }else break; } } } return rst; }}
剪枝法
public class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); int length = nums.length; if (length < 3) { return result; } Arrays.sort(nums); for (int i = 0; i < length - 2; i++) { if (nums[i] > 0) { return result; } if (i == 0 || nums[i] != nums[i - 1]) { int target = -nums[i]; int low = i + 1, high = length - 1; while (low < high) { if (nums[high] < 0 || nums[low] > target) { break; } if (nums[low] + nums[high] == target) { result.add(Arrays.asList(nums[i], nums[low], nums[high])); while(++low<high && nums[low] == nums[low-1]); while(low<--high && nums[high] == nums[high+1]); } else if (nums[low] + nums[high] < target) { while(++low<high && nums[low] == nums[low-1]); } else { while(low<--high && nums[high] == nums[high+1]); } } } } return result; }}
0 0
- [LeetCode]15.3Sum
- LeetCode 15.3Sum
- [Leetcode] 15.3Sum @python
- LeetCode-15.3Sum
- Leetcode||15.3Sum
- 15.3sum leetcode(array)
- [LeetCode]15.3Sum
- [LeetCode]15.3Sum
- [leetcode: Python]15.3Sum
- LeetCode 15.3Sum
- LeetCode----- 15.3Sum
- leetcode 15.3 Sum
- [Leetcode] 15.3Sum
- 菜鸟刷leetcode 15.3Sum
- LeetCode——15.3Sum
- leetcode——15.3Sum
- 【Leetcode】Path Sum (Sum)
- 【Leetcode】Two Sum (Sum)
- 最基础的RecyclerView
- LeetCode - 62. Unique Paths
- 好资源backup
- 菜鸟起飞——机器学习实战第一篇:机器学习介绍
- 浅谈javascript中的加减时间
- Leetcode||15.3Sum
- 二叉树的基本概念
- Java语言程序设计基础篇原书第十版第五章编程练习题答案
- Ubuntu12 64位 阿里云服务器端配置mysql+tomcat+jdk(java web环境)
- numpy模块
- Codeforces Round #373 (Div. 1)A. Efim and Strange Grade【恶心模拟】
- 操作系统——存储管理
- JAVA导入导出EXCEL(JXL)
- backup2