leetcode:3Sum
来源:互联网 发布:琪琪影院软件下载 编辑:程序博客网 时间:2024/06/05 15:29
用Hash的方法,标记一下下标跟数量
public class Solution { public List<List<Integer>> threeSum(int[] num) { List<List<Integer>> ans = new ArrayList<>(); if(num != null && num.length >= 3){ Arrays.sort(num); HashMap<Integer, Integer> map = new HashMap<>(); HashMap<Integer, Integer> pointer = new HashMap<>(); for(int i = 0; i < num.length; ++i){ Integer count = map.get(num[i]); if(count == null){ count = 0; pointer.put(num[i], i); } map.put(num[i], count + 1); } // List<Integer> l = new ArrayList<>(4); int zero = 0; for(int i = 0, j = i + 1; i < num.length; ){ j = i + 1; while(j < num.length){ int remain = zero - num[i] - num[j]; Integer count = map.get(remain); boolean flag = false; if(count != null){ int site = pointer.get(remain); if(site > j){ flag = true; } else if(site == j && count >= 2){ flag = true; } if(flag){ List<Integer> l = new ArrayList<>(); l.add(num[i]);l.add(num[j]);l.add(remain); ans.add(l); } } while( ++j < num.length && num[j] == num[j - 1]); } while( ++i < num.length && num[i] == num[i - 1]); } if(map.get(0) != null && map.get(0) >= 3){ List<Integer> l = new ArrayList<>(); l.add(0);l.add(0);l.add(0); ans.add(l); } } return ans; }}
0 0
- 【Leetcode】3Sum (Sum)
- Leetcode:2Sum,3Sum
- 【Leetcode】3Sum Closest (Sum)
- leetcode 2 sum 3sum 4sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- [LeetCode] K sum(2Sum、3Sum、4Sum)
- leetcode--sum集合:2sum,3sum,4sum
- leetcode --- 2 sum , 3 sum , 4 sum , k sum problem
- LeetCode: 3Sum
- LeetCode: 3 Sum Closest
- leetcode - 3 Sum
- leetcode - 3 sum closest
- leetcode 3Sum
- leetcode 3Sum Closest
- LeetCode: 3Sum
- 循环赛日程表java写
- RootSudo
- 文档聚类概述
- 软件开发过程(CMMI/RUP/XP/MSF)是与非?
- Android NDK编程(一) Windows下环境配置
- leetcode:3Sum
- 外网访问控制网络备忘
- github for windows 安装失败—解决
- 快速判断正整数是否为某个数的幂
- The thinking of struts2 namspace
- 隐马尔可夫(HMM)
- <mvc:view-controller path="" view-name=""/>这个的具体使用
- C 语言程序设计实践 5.5 求约数个数
- 外观模式(facade)C#