publicintmaxArea(int[] height){ int left = 0, right = height.length - 1; int maxAreaSize = 0; int h = 0, w = 0; while (left < right) { h = Integer.min(height[left], height[right]); w = right - left; maxAreaSize = Integer.max(w * h, maxAreaSize); if (height[left] < height[right]) { left++; } else { right--; } } return maxAreaSize; }
public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList(); // 排序 Arrays.sort(nums); int l,r,sum; // 固定最左边的数字, 保证不重复 for (int i=0; i<nums.length; i++) {
if(i > 0 && nums[i] == nums[i-1]) continue;
l = i+1; r = nums.length - 1; while (l < r) { sum = nums[i] + nums[l] + nums[r]; if (sum == 0) { result.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++; } elseif (sum < 0) { l++; } else { r--; } } } return result; }