977.有序数组的平方
题目建议: 本题关键在于理解双指针思想
题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/
文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html
视频讲解: https://www.bilibili.com/video/BV1QB4y1D7ep
个人暴力解法:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int slow=0;
for (int i=0;i<nums.size()-1;i++)
{
for(int j=i+1;j<nums.size();j++)
{
if(nums[i]*nums[i]>nums[j]*nums[j])
{
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
for(int m=0;m<nums.size();m++)
{
nums[m]=nums[m]*nums[m];
}
return nums;
}
};
倒是想过怎么利用数组的有序性和双指针,但是没有写出来(14:30-16:00),主要是怎么排序,只会冒泡。。啊我真的服了自己,看了双指针的解法之后:为什么我想不到创建新数组变量,我就总觉得要在原数组中去完成排序。
因为是非递减数组,且有可能有负数,那么最大值只有可能在两头出,那么两个指针从左右分别向中间移动,左右一比,把大的放在新建数组变量的最后一位。
明天再试一下双指针
209.长度最小的子数组
题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。
题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/
视频讲解:https://www.bilibili.com/video/BV1tZ4y1q7XE
这个为什么暴力解法没有解出来?
因为我的思路是:找到满足条件的长度最小的,那么就是一个元素是否满足条件?满足的话返回1。两个元素和是否满足条件?满足的话返回2。三个元素和是否满足条件,以此类推。。。这样的话,两个元素相加还好说,两层循环就可以,更多元素相加时怎么循环?是不是还得循环?那我又不确定最终长度最小的会是几个元素的和?就进入了死胡同。。。因为这个判断几个元素的和大于target我是用if判断的,每个if下sum公式都不一样,那肯定解不出来啊,大概意思见错误代码。。
看了滑动窗口之后写的:
emmm,好像还是暴力解法,好的又看了一眼,明天再试一下
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int sum=0;
int subLen=0;
int resultLen=INT32_MAX;
for(int i=0;i<nums.size();i++){
sum=0;
for(int j=i;j<nums.size();j++){
sum+=nums[j];
if(sum>=target){
subLen=j-i+1;
if(subLen<resultLen){
resultLen=subLen;
}
break;
}
}
}
if(resultLen!=INT32_MAX){
return resultLen;
}
else{
return 0;
}
}
};
59.螺旋矩阵II
题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。
题目链接:https://leetcode.cn/problems/spiral-matrix-ii/
文章讲解:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html
视频讲解:https://www.bilibili.com/video/BV1SL4y1N7mV/
今日感受:
正确的答案千篇一律,而我的错误花样百出哈哈。
一道题看一天!生气!!!
但是敲一行就很棒!我管他!!!!
今日时长:
起始 | 结束 | 时长 |
---|---|---|
14:30 | 16:00 | 1.5h |
20:00 | 22:30 | 2.5h |