第一天
https://leetcode-cn.com/problems/container-with-most-water/
-
解题方法:双指针、暴力法
-
解题思路
- 我们需要一个面积公式 底 * 高(
(right - left) * height[最小的高]
) - 为什么想到双指针?我们需要去找到公式中:变的
height和left都是变的。可以考虑使用双指针。
- 如何变?
移动短板, 容量可能变大,也可能变小。
移动长板,容量一定变小。
class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int maxArea = minHeight(height[left], height[right]) * (right - left);
while(left < right){
// 找到短板
if(height[left] < height[right]) {
left++;
}else right--;
int area = minHeight(height[left], height[right]) * (right - left);
if(maxArea < area) maxArea = area;
}
return maxArea;
}
public int minHeight(int lHeight, int rHeight){
return lHeight > rHeight ? rHeight : lHeight;
}
}
第二天
https://leetcode-cn.com/problems/move-zeroes/
public void moveZeroes(int[] nums) {
int recardIndex = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] != 0){
nums[recardIndex] = nums[i];
recardIndex++;
}
}
for(int i = recardIndex; i<nums.length; i++){
nums[i] = 0;
}
}
https://leetcode.com/problems/climbing-stairs/
https://leetcode-cn.com/problems/3sum/ (高频老题)
评论区