遍历技巧:2,3,4sum&3sum closest&set matrix zeroes&Container With Most Water
来源:互联网 发布:mysql inner join 编辑:程序博客网 时间:2024/06/07 11:37
2 sum
public class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; HashMap<Integer,Integer> map = new HashMap(); for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])){ res[1] = i+1; res[0] = map.get(target-nums[i]); return res; } map.put(nums[i],i+1); } return res; }}
3 sum
public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); List<List<Integer>> res = new LinkedList(); for(int i=0;i<nums.length-2;i++){ if(i>0&&nums[i]==nums[i-1]) continue; int lo=i+1,hi=nums.length-1; while(lo<hi){ int sum=nums[i]+nums[lo]+nums[hi]; if(sum==0){ res.add(Arrays.asList(nums[i],nums[lo],nums[hi])); while(lo<hi&&nums[lo]==nums[lo+1])lo++; while(lo<hi&&nums[hi]==nums[hi-1])hi--; lo++; hi--; }else if(sum<0) lo++; else hi--; } } return res; }4 sum
public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> res = new ArrayList(); if(nums.length<4) return res; Arrays.sort(nums); for(int i=0;i<nums.length-3;i++){ if(i>0&&nums[i]==nums[i-1]) continue; for(int j=i+1;j<nums.length-2;j++){ if(j>i+1&&nums[j]==nums[j-1]) continue; int lo=j+1,hi=nums.length-1; while(lo<hi){ int sum = nums[i]+nums[j]+nums[lo]+nums[hi]; if(sum==target){ res.add(Arrays.asList(nums[i],nums[j],nums[lo],nums[hi])); while(lo<hi&&nums[lo]==nums[lo+1]) lo++; while(lo<hi&&nums[hi]==nums[hi-1]) hi--; lo++; hi--; }else if(sum<target) lo++; else hi--; } } } return res; }
3 sum closest
public int threeSumClosest(int[] nums, int target) { int res = nums[0] + nums[1] + nums[2]; Arrays.sort(nums); for(int i=0;i<nums.length-2;i++){ int lo=i+1,hi=nums.length-1; while(lo<hi){ int sum = nums[i]+nums[lo]+nums[hi]; if(sum<target) lo++; else hi--; if(Math.abs(sum-target)<Math.abs(res-target)) res = sum; } } return res; }
set matrix zeroes
public void setZeroes(int[][] matrix) { boolean fr = false; boolean fc = false; for(int i=0;i<matrix.length;i++){ for(int j=0;j<matrix[0].length;j++){ if(matrix[i][j]==0){ if(i==0) fr = true; if(j==0) fc = true; matrix[0][j]=0; matrix[i][0]=0; } } } for(int i=1;i<matrix.length;i++){ for(int j=1;j<matrix[0].length;j++){ if(matrix[0][j]==0||matrix[i][0]==0){ matrix[i][j]=0; } } } if(fr){ for(int i=0;i<matrix[0].length;i++){ matrix[0][i] =0; } } if(fc){ for(int j=0;j<matrix.length;j++){ matrix[j][0] =0; } } }
Container With Most Water
public int maxArea(int[] height) { int left = 0; int right = height.length - 1; int max = 0; while(left < right) { max = Math.max(max,area(right,left,height)); if(height[left]< height[right]) { left++; }else { right--; } } return max; } private int area(int right,int left,int[] height) { return (right - left) * Math.min(height[right],height[left]); }
0 0
- 遍历技巧:2,3,4sum&3sum closest&set matrix zeroes&Container With Most Water
- 11. Container With Most Water \ 16. 3Sum Closest \ 15. 3Sum
- Container With Most Water & Path Sum I && II
- LeetCode 遍历技巧 | 16. 3Sum Closest
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 3Sum, 3Sum Closest, 4 Sum
- Container With Most Water
- Container with most water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- [AndroidUI]自定义view(三):实现圆环进度条
- 3度带与6度带
- JAVA集合类
- AlertDialog 警告对话框
- RS分析法分析LSB密写
- 遍历技巧:2,3,4sum&3sum closest&set matrix zeroes&Container With Most Water
- ubuntu下安装交叉编译工具链的方法总结
- C#截取字符串(String.Substring方法)
- linux下批量替换文件内容
- iOS Application Life Cycle 应用程序生命周期
- 设计模式之抽象工厂模式
- 微信平台开发相关的问题记录
- Centos6.5下搭建Tomcat
- 面试会遇到的正则--去除掉js代码,或是html中代码