283. 移动零
https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-liked
public void moveZeroes(int[] nums) {
int r = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0){
int temp = nums[r];
nums[r] = nums[i];
nums[i] = temp;
r++;
}
}
}
总结:一个指针去记录放非0的位置,一个指针去遍历
11. 盛最多水的容器
https://leetcode.cn/problems/container-with-most-water/description/?envType=study-plan-v2&envId=top-100-liked
public int maxArea(int[] height) {
int i = 0 , j = height.length - 1;
int maxRain = 0;
while (i < j){
maxRain = height[i] < height[j] ?
Math.max(maxRain , getRain(height ,i++,j)) :
Math.max(maxRain , getRain(height,i,j--));
}
return maxRain;
}
public int getRain(int[] height, int i,int j){
return (j - i) * Math.min(height[i],height[j]);
}
总结:使用双指针,总体思想就是先让指针在左右边界,然后每次指针往里收缩,收缩哪个呢,收缩二者矮的那个,因为收缩矮的,下个面积可能变大,如果收缩高的,下个面积不变(收缩了之后高度一样)或变小(收缩之后高度变小)(ps:如果收缩之后高度变大了,由于有之前的短板的存在,所以木桶效应,还是面积会变小)
42. 接雨水