草庐IT

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

977.有序数组的平方题目链接:977.有序数组的平方记录:看到题目的第一眼想法:  一看到题,可以,直接平方就可以了。平方后的没有升序了怎么办?弄个排序。  如果是按照上面说的平方后排序这样的思路,得到的时间复杂度是O(nlogn)的时间。因为遍历一遍并把平方后的数据赋到新数组,用时O(n),然后排序,排序效果最好的是快排O(nlogn)。两个加起来就是这个暴力算法的总时间。化简一下,时间复杂度就是O(nlogn)了。可是,还有更好的。怎么做?使用双指针!双指针的做题思路:    由于数组中包含了负数。负数一平方就正了,会改变原有位置,而且一般来说边界的数,平方后的结果更大一些。所以,怎么办

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

977有序数组的平方题目链接:977有序数组的平方介绍给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。思路看到题目的第一反应,首先负数的平方跟正数的平方是相同的,所以想到可以先将Nums中的负数变成正数,然后对其进行排序,然后再将排好序的正数进行平方。或者直接平方后,再排序。暴力解法:classSolution{public:vectorsortedSquares(vector&nums){for(inti=0;i双指针解法:当对数组进行平方后还能进行一个有序的排列时,可发现,所有元素平方后由大到小的趋势:最大元素在两边。首先可定义一个新的数

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

977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II977.有序数组的平方1.思路2.代码实现209.长度最小的数组1.思路2.代码实现59.螺旋矩阵II1.思路2.代码实现977.有序数组的平方题目链接:link视频文字1.思路方法一:暴力算法,循环做平方然后快排,时间复杂度O(n+logn)方法二:双指针法。left指向数组起始,right指向数组末,新建立一个数组result放排序之后的值,从末尾放起。ifnums[left]*nums[left]ifnums[left]*nums[left]>nums[right]*nums[right]则说明应将左侧的值先赋给数组re

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

代码随想录算法训练营第二天|LeetCode977有序数组的平方、LeetCode209长度最小的子数组、LeetCode59螺旋矩阵II、数组总结时长:大约3~4小时977.SquaresofaSortedArrayGivenanintegerarraynumssortedinnon-decreasingorder,returnanarrayofthesquaresofeachnumbersortedinnon-decreasingorder.Example1:Example2:Constraints:1104-1044numsissortedinnon-decreasingorder.Fo

代码随想录Day2 977.有序数组的平方、 209.长度最小的子数组 、59.螺旋矩阵II

977.有序数组的平方题目给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]思路因为数组是非递减顺序的,所以平方最大的数一定在数组的两边(可能有负数的存在),所以我们用左右两个指针,依次比较,把较大的数放在一个新的数组的最后。这里要注意不能从前往后往新数组里放数,因为较小的数如果放在第一个位置,left指针加1,后面的数的平方是完全有可能比第一个数的平方小的,比如[-4

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

代码随想录算法训练营第二天|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II977.有序数组的平方今天做的力扣题目,由于vector数组的初始化错误,debug了半天才发现所以开篇就将初始化的方法写出来vector初始化1.创建一个大小为100的空数组vectorint>A(100);2.创建一个大小为100的数组,并赋予初值1vectorint>A(100,1);3.将数组Bcopy给数组Avectorint>A(B);4.将数组B的切片(此处是前三个)赋值给数组Avectorint>A(B.begin(),B.begin+3);5.与4相似,将数组B的B[0]-B[7]

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

一、双向双指针双向双指针的使用,因为两边大,中间小,所以从右往左走,新数组就是递增的了。给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。publicint[]sortedSquares(int[]nums){intleft=0;intright=nums.length-

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

打卡第二天,认真做了两道题目,顶不住了好困,明天早上练完车回来再重新看看。今日任务第一章数组977.有序数组的平方209.长度最小的子数组59.螺旋矩阵II977.有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:110410^4104−104-10^4−1041

代码随想录【day 2】| 977.有序数组的平方、209.长度最小的子数组、 59.螺旋矩阵II

代码随想录【day2】|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵IILeetCode977.有序数组的平方题目链接:977.有序数组的平方卡哥文解视频讲解解题思路(双指针)代码实现方法一:暴力解法(直接判断)方法二:双指针法LeetCode209.长度最小的子数组题目链接:LeetCode209.长度最小的子数组卡哥文解视频讲解解题思路(滑动窗口)代码实现LeetCode59.螺旋矩阵II题目链接:LeetCode螺旋矩阵II卡哥文解视频讲解解题思路(模拟)代码实现day2总结复盘LeetCode977.有序数组的平方题目链接:977.有序数组的平方卡哥文解视频讲解题目

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

代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵2|9.22977.有序数组的平方暴力法将数组元素全部平方用冒泡排序进行升序排序classSolution{publicint[]sortedSquares(int[]nums){for(inti=0;inums.length;i++){nums[i]=nums[i]*nums[i];}for(inti=0;inums.length;i++){for(intj=0;jnums.length-1-i;j++){if(nums[j]>nums[j+1]){inttemp=nums[j];nums[j]=nu