总结复盘

88. 合并两个有序数组

合并;
排序;
for(int i = 0; i < n; i++) {
nums1[i + m] = nums2[i];
}
Arrays.sort(nums1);


80. 删除有序数组中的重复项 II

int left = 1, righe = 1;
while(righe < nums.length) {
if(nums[left - 1] != nums[righe]) {
nums[left++] = nums[righe];
}
righe++;
}
return left;
对比
int slow = 2, fast = 2;
while(fast < n) {
if(nums[slow - 2] != nums[fast]) {
nums[slow++] = nums[fast];
}
fast++;
}
return slow;


907. 子数组的最小值之和 & 84. 柱状图中最大的矩形

暴力两次遍历;
for(int i = 0; i < arr.length; i++) {
int min = arr[i];
for(int j = i; j < arr.length; j++) {//attention j = i
min = Math.min(min, arr[j]);
ans = (ans + min) % mod;
}
}
&
for(int i = 0; i < heights.length; i++) {
int height = heights[i];
for(int j = i; j < heights.length; j++) {因为单个的时候也会可能是答案, 如果j = i + 1,则有可能丢失i
height = Math.min(height, heights[j]);
ans = Math.max(ans, (j - i + 1) * height);
}
}


81. 搜索旋转排序数组 II

直接一手HashSet,空间换时间;


1773. 统计匹配检索规则的物品数量

因为每个List都能精准定位到0、1、2,所以可以指定一个HashMap来确定寻找的类项;

posted on 2022-10-29 16:37  xtdnn  阅读(38)  评论(0)    收藏  举报

导航