977.有序数组的平方
力扣题目链接
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]

#思路
● 看到题目的第一想法,直接暴力解+sort排序

class Solution {public:vector<int> sortedSquares(vector<int>& nums) {for(int i = 0 ;i < nums.size();i++){nums[i]=nums[i]*nums[i];}sort(nums.begin(),nums.end());return nums;}
};

看完代码随想录之后,可以利用双指针法了,i指向起始位置,j指向终止位置。
定义一个新数组result,和A数组一样的大小。
从大到小排序,让k指向result数组终止位置。
如果A[i] * A[i] < A[j] * A[j] 那么result[k–] = A[j] * A[j];
如果A[i] * A[i] >= A[j] * A[j] 那么result[k–] = A[i] * A[i];

class Solution {public:vector<int> sortedSquares(vector<int>& nums) {vector<int> nums1(nums.size(),0);int i = 0;int j = nums.size()-1;int k = nums.size()-1;while(i<=j){if(nums[i]*nums[i]<nums[j]*nums[j]){nums1[k]=nums[j]*nums[j];k--;j--;}else{nums1[k]=nums[i]*nums[i];k--;i++;}}return nums1;}
};

209.长度最小的子数组
力扣题目链接
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

示例:
输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。

#思路
● 看到题目的第一想法,两层for循环,第一层for遍历数组,第二层for循环更新数组(一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程)
PS:因为 他的测试用例是10的9次方,而暴力解的时间复杂度是n的平方,测试用例太多了,所以超时

class Solution {public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT32_MAX;//初始化元素个数int subL = 0;//定义字符串元素个数int sum=0;//总和for(int i = 0;i<nums.size();i++)//起始位置{int sum = 0;for(int j = i;j<nums.size();j++)//结束位置{sum+=nums[j];//求出队列长度if(sum>=target)//发现数组超过就更新{subL =j-i+1;//元素个数result = result<subL?result:subL;break;}}}return result = result==INT32_MAX?0:result;}
};

看完代码随想录之后,可以利用快慢指针法,快指针用来寻找新数组的元素(不含目标元素),慢指针用来指向新数组的下标。
用一个快慢指针在for’循环内完成两个for循环的工作。

class Solution {public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0;int subL = 0;//元素长度int i=0;int result = INT32_MAX;for(int j=0;j<nums.size();j++){sum+=nums[j];while(sum>=target){subL = j-i+1;//计算长度result = result<subL?result:subL;//获取最小长度sum = sum-nums[i];i++;}}return result==INT32_MAX?0:result;}
};

59.螺旋矩阵II
力扣题目链接
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
● 看到题目的第一想法,一进循环深似海,从此Offer是路人

看完代码随想录之后,注意转圈的逻辑+区间的定义。
每画一条边都要坚持一致的左闭右开的原则,这样这一圈才能按照统一的规则画下来,就像二分法 ,每次分数组保持相对一致的数量。

class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> result(n, vector<int>(n, 0)); int startx = 0, starty = 0; int offset = 1;  int loop = n / 2;int mid = n / 2; int count = 1; int i, j; while (loop--) {i = startx;  j = starty;for (j = starty; j < n - offset; j++) result[i][j] = count++; // 填写上边for (i = startx; i < n - offset; i++) result[i][j] = count++; // 填写右边for (; j > starty; j--) result[i][j] = count++; for (; i > startx; i--) result[i][j] = count++; startx++; starty++;offset++;}if (n % 2) result[mid][mid] = count;  return result;}
};

总结
● 花了6~7个小时,终于把day2任务完成,还有几天出成绩,希望能上岸!
● 今天还学了如果debug,大概就是哪里有错,哪里cout,数组结束!

代码随想录算法训练营第二天| 977有序数组平方、207最小子数组、59螺旋矩阵II。相关推荐

  1. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...

  2. 代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II、数组总结

    目录: 977.有序数组的平方 209.长度最小的子数组 1.暴力输出法 2.滑动窗口法 59.螺旋矩阵II 总结: 今日收获: 977.有序数组的平方 因为是递增且有负数的数组,那么他们的平方如果还 ...

  3. 代码随想录算法训练营第二天| 977. 有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II 。

    977. 有序数组的平方 题目链接 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 暴力解法: class Solution {pu ...

  4. Leonard代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    第一章数组 (今日任务) 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理 ...

  5. 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...

  6. 代码随想录算法训练营第二天 | LeetCode977有序数组的平方 、209长度最小的子数组、 59.螺旋矩阵II

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

  7. 代码随想录算法训练营第二天|LeetCode977.有序数组的平方,209.长度最小的子数组, 59.螺旋矩阵II

    题目连接:977.有序数组的平方 暴力法:将数组所有元素平方然后再排序(未利用题目条件:原始数组按照非降序排列) 双指针法:数组中各元素符号有三种情况:①所有元素非负(将数组中元素平方即可).②所有元 ...

  8. 代码随想录算法训练营第二天|LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II。

    LeetCode977.有序数组的平方 题目链接:LeetCode977.有序数组的平方 暴力解法: class Solution { public:vector<int> sortedS ...

  9. 代码随想录算法训练营第二天|LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵Ⅱ

    算法训练营打卡第二天,今天的前两道题目重点练习了双指针的用法,最后一道题目将边界条件的限定作为关键点,额外锻炼了逻辑能力. LeetCode977.有序数组的平方 题目链接 https://leetc ...

最新文章

  1. DOS 和 Linux 常用命令的对比
  2. c+和python的区别-c语言和python之间有什么区别
  3. Jmeter + Grafana + InfluxDB 性能测试监控
  4. 一个稍微复杂的VTK程序
  5. Spark学习之概念了解
  6. python华为面试题10个人数3获取下标
  7. 创业 4 年获近 7000 万美元融资,53 岁老程序员 all in 开源
  8. 浅析权限认证中的有状态和无状态
  9. 地府后台管理系统30.已经在开发中,介绍下目前的工作进度和未来展望
  10. Qt面试题(一)Qt信号槽第五个参数
  11. ERP技术在财务信息化转型中应用探讨
  12. CMMB手机电视入网咋就这么难?
  13. 东大22春《马克思主义基本原理概论》在线平时作业1百分非答案
  14. Windows补丁修复- Microsoft Windows HTTP.sys远程代码执行漏洞 (MS15-034)(CVE-2015-1635)
  15. 【FTP】错误描述:200 Switching to ASCII mode,227 Entering Passive Mode
  16. 让硬盘灯不再狂闪,调整Win7系统绝技(转)
  17. el-pagination分页自定义前往第几页样式(下拉框形式)
  18. 串口发送+RAM+VGA传图
  19. 信源编码算法(费诺编码哈夫曼编码)
  20. android备份:apk安装过程及原理,备份已安装应用的apk包技术实现方案

热门文章

  1. Gurobi学习(二):Gurobi的注册与下载安装
  2. 靠,嘉立创打板又降价
  3. linux提取文件最后一行,sed或awk处理文件最后一行的实现方法
  4. 用python写个一键锁屏的小脚本
  5. python 逗号赋值_python中字符串赋值 逗号_四、python字符串
  6. 【Realtek】【杜比Dolby音效管理应用】DS1, DAX2, DAX3, DTSX【解锁驱动见说明】
  7. 58同城职位分类数据 json
  8. 守望者的逃离(贪心)
  9. 最全最准确获取iOS 状态栏、导航栏、TabBar高度
  10. HTML中如何标记文章作者署名,你真的知道文章里的作者署名是怎么排序的吗?...