草庐IT

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

977.有序数组的平方977.有序数组的平方代码随想录(programmercral.com)双指针法经典题目|LeetCode:977.有序数组的平方状态:只会使用暴力解法,双指针法没有想出来思路方法一:暴力解法使用一个for循环直接把数组元素全部平方,之后再对数组排序代码实现:classSolution{public:  vectorsortedSquares(vector&nums){    //暴力解法,直接平方然后排序    for(inti=0;i显然时间复杂度为o(n+nlogn)方法二:双指针法数组是有序的,就是平方之后负数可能变成最大值了,也就是说最大值在数组的两边,可以用双

代码随想录算法训练营Day2:977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵

 977.有序数组的平方 ,        给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。思路:非递减-->递增 方法一:双指针        每个元素平方后,因为是升序数组,所以从两端比较新数组元素的大值。依次放入新数组内。classSolution{public:vectorsortedSquares(vector&nums){//方法一intk=nums.size()-1;vectornews(nums.size(),0); //定义新数组result//因为是顺序数组,所以从数组比较两端元素来确定最大的新元素for(

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

Leetcode978 有序数组的平方 1:根据题目建议,实现。   错:if的分类开始弄得过于复杂。Leetcode209.长度最小的子数组1:自己尝试实现(暴力解法:两个for循环),半小时未做出。 错:满足条件后忘记跳出循环,同时注意result的更新策略。双指针Leetcode 59.螺旋矩阵II1:下不了手。注意事项:每一个循环的开始、结束条件多做几遍。

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

977.有序数组的平方 https://leetcode.cn/problems/squares-of-a-sorted-array/暴力排序classSolution{public:vectorsortedSquares(vector&nums){for(inti=0;i时间复杂度为O(nlogn)双指针所给数组为有序数组,可以用双指针,但要考虑负数平方后的大小。创建新数组result,让k指向最后一个数,然后往前排序。classSolution{public:vectorsortedSquares(vector&nums){intk=nums.size()-1;vectorresult(n

算法训练营笔记day02|977.有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II

977.有序数组的平方题目连接笔记双指针法:从两边开始遍历,选出平方值较大的数,从数组的后面开始插入。心得一开始想的是用两个指针从中间开始遍历,但是麻烦很多,代码还是简洁的好,应该多尝试反向思考。classSolution{public:vectorint>sortedSquares(vectorint>&nums){intleft=0;intright=nums.size()-1;vectorint>result(nums.size(),0);inti=nums.size()-1;while(leftright){if(nums[left]*nums[left]nums[right]*num

文心一言 VS 讯飞星火 VS chatgpt (59)-- 算法导论6.4 3题

文心一言VS讯飞星火VSchatgpt(59)--算法导论6.43题三、对于一个按升序排列的包含n个元素的有序数组A来说,HEAPSORT的时间复杂度是多少?如果A是降序呢?文心一言:对于一个按升序排列的包含n个元素的有序数组A来说,HEAPSORT的时间复杂度是O(nlogn)。这是因为HEAPSORT算法的主要部分是构建最大堆和进行堆排序。构建最大堆的时间复杂度为O(n),堆排序的时间复杂度为O(nlogn)。如果A是降序排列的,即数组中的元素按照从大到小的顺序排列,那么HEAPSORT的时间复杂度仍然是O(nlogn)。这是因为在构建最大堆的过程中,即使是降序排列的数组,我们仍然可以通过

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

977.有序数组的平方题目链接:977.有序数组的平方方法一:暴力遍历varsortedSquares=function(nums){for(vari=0;inums.length-1;i++){nums[i]=Math.pow(nums[i],2)}returnnums.sort((a,b)=>{returna-b})}方法二:双指针数组是有序的平方后,数组的最大值是数组的两端varsortedSquares=function(nums){letnewArr=[]letk=nums.length-1//i,j首尾两个指针进行对比for(vari=0,j=nums.length-1;ij;){

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

977.有序数组的平方977.有序数组的平方-题目看到这个题目的第一想法是暴力解法,求出数组中每个数的平方后,对数组进行排序classSolution{public:vectorsortedSquares(vector&nums){for(inti=0;i然而题目要求时间复杂度为o(n),暴力解法时间复杂度为o(n+nlogn)。看了题解后发现可以利用双指针解法,因为对含有负数的有序数组,最大值只能在数组的两端,因此用两个指针分别指向数组的起点和末尾,对两个指针指向的值的平方进行计算,判断。classSolution{public:vectorsortedSquares(vector&nums

代码随想录Day02 | LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II

977.有序数组的平方力扣题目链接(opensnewwindow)给你一个按非递减顺序排序的整数数组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]提示:1-104nums已按非递减顺序排序思路:暴力解法最直观的想法,莫过于:每个数平方之后,排个序,美滋滋,代码如下:classSolution{public:vec

代码随想录Day02 | LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II

977.有序数组的平方力扣题目链接(opensnewwindow)给你一个按非递减顺序排序的整数数组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]提示:1-104nums已按非递减顺序排序思路:暴力解法最直观的想法,莫过于:每个数平方之后,排个序,美滋滋,代码如下:classSolution{public:vec