977.有序数组的平方
1.自己思路: for循环平方 然后sort排序 可正常通过 但是耗时很久 算是暴力法 通过
2.双指针思路:利用题目的数组是非递减数组这个特点 大值肯定在两端 所以left right分别进行比较 大的放在数组最右(注意 for循环第三个元素可以不进行操作)耗时大大减小 通过
209.长度最小的子数组
1.自己思路:需要考虑极端情况 从0开始相加 然后和大于target就从左值开始减 把每次大于target的长度记录在数组里 然后最后排序数组输出第一个元素 通过率只有46% QAQ
补:可以双层for循环暴力解法
2.滑动窗口思路:与自己思路相类似 窗口一直滑动 但是判断条件值大于target应该为while循环 while循环结束后(理解成左下标更新结束后)才会再次for循环更新右下标索引!
总结:最终的正确代码与自己代码的差别就在于当满足窗口滑动条件时 自己思路是只减去一次没用做到滑动的思想 正确思路是利用while循环 达到一直滑动
59.螺旋矩阵II
https://blog.csdn.net/qq_31918961/article/details/90109988
vector二维数组赋值采取【】【】
1.自己思路 :二维数组(行在前 列在后) 图结构 中心值为n的平方 行数与列数均为n-1 接下来的问题点在于数组下标怎么变化代表顺时针(草稿纸采取了n 2 3 4 的情况对应的图 先找规律)
列0->n 行0->n-1 列n-1->0 行n-1->1(第一轮)
列0->n-2 行1->n-2 列n-2->0 行n-2->1(第二轮)
没有抓到关键逻辑 代码输出失败QAQ
2.题解思路:
基础思路在自己思路的基础上 但是!!!自己思路没有区分好每一行怎么填数值 按照自己分析为n->n-1->n-1->n-2->1
题解思路关键在于将每次填数值当成左闭右开的区间 那么则变成每次n-1的填数值
把每一条边的最后一个节点留给下一条边来处理
四个循环遍历都是左闭右开 注意行列(即二维数组下标的变化)
第二圈更新初始的行列数值即可
第一次自己写错误 忽略了中间值
第二次自己写错误 第三圈与第四圈判断条件出错
第三次自己写错误 第一行的二维数组赋值时第一个下标应该是y不应该是I值(考虑多圈的情况)
第四次 pass