第一天

https://leetcode-cn.com/problems/container-with-most-water/

  • 解题方法:双指针、暴力法

  • 解题思路

  1. 我们需要一个面积公式 底 * 高((right - left) * height[最小的高]
  2. 为什么想到双指针?我们需要去找到公式中:变的

height和left都是变的。可以考虑使用双指针。

  1. 如何变?

移动短板, 容量可能变大,也可能变小。
移动长板,容量一定变小。

image-1706504292040

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/ (高频老题)