977.有序数组的平方题目链接1暴力解法classSolution{public:vectorsortedSquares(vector&nums){intsize=nums.size();for(inti=0;i2双指针想到了双指针但是只考虑了两端比谁小,没有考虑到是两者比谁大,大的放后面。vector在用[]赋元素时要初始化大小,比如vectornums(size),不然会报错runtimeerror:referencebindingtonullpointeroftype。dclassSolution{public:vectorsortedSquares(vector&nums){intsi
今日任务:454.四数相加II,383.赎金信,15.三数之和,18.四数之和+总结状态:1刷文章目录一、454.四数相加II二、383.赎金信三、15.三数之和四、18.四数之和总结一、454.四数相加II题目:给定四个包含整数的数组列表A,B,C,D,计算有多少个元组(i,j,k,l),使得A[i]+B[j]+C[k]+D[l]=0。思路:ThisisaC++implementationfortheproblemwhereweneedtocountthenumberofi,j,k,lsuchthatA[i]+B[j]+C[k]+D[l]equalstozero.Thesolutionuse
977.有序数组的平方思路:数组是非递减的,因此数组的单调性呈V形,数组平方的最大值肯定出现在边界,所以我们可以对边界进行检查,将平方数大的插入新的数组的尾部。问题:可能受到了移除元素那题的影响,刚开始一直把自己局限在空间复杂度O(1)且时间复杂度O(N)的方法(即只在原数组进行操作),最后才发现不可行浪费时间。算法完成过程中可能是写迷糊了,犯了很多低级错误,包括比较条件没用平方,进行操作后两个指针没有更新。说明在检查过程没有行程统一的习惯。classSolution{public:vectorsortedSquares(vector&nums){intn=nums.size();inti=0
977.有序数组的平方思路:数组是非递减的,因此数组的单调性呈V形,数组平方的最大值肯定出现在边界,所以我们可以对边界进行检查,将平方数大的插入新的数组的尾部。问题:可能受到了移除元素那题的影响,刚开始一直把自己局限在空间复杂度O(1)且时间复杂度O(N)的方法(即只在原数组进行操作),最后才发现不可行浪费时间。算法完成过程中可能是写迷糊了,犯了很多低级错误,包括比较条件没用平方,进行操作后两个指针没有更新。说明在检查过程没有行程统一的习惯。classSolution{public:vectorsortedSquares(vector&nums){intn=nums.size();inti=0
文章目录63.不同路径II:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:63.不同路径II:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。样例1:输入: obstacleGrid=[[0,0,0],[0,1,0],[0,0,0]] 输出: 2 解释: 3x3网格的正中间有一个障碍物。 从左上角到右下角一共有2条不同的路
977.有序数组的平方题目链接:977.有序数组的平方文章讲解:977.有序数组的平方视频讲解:双指针法经典题目|LeetCode:977.有序数组的平方_哔哩哔哩_bilibili 暴力解法思路:看题目要求是将数组中的元素平方再排序,暴力解法就是简单的把数组中的每个元素进行平方,然后将平方后的元素进行排序。代码:classSolution{public:vectorsortedSquares(vector&A){for(inti=0;i时间复杂度:O(nlogn)(取决于快排)双指针解法思路:一个数组,他的元素进行平方后,最大值一定会在两边不会在中间,比如-4,-1,0,3,10,五个数字经
977.有序数组的平方创建新的数组保存结果,双指针classSolution{public:vectorsortedSquares(vector&nums){vectorresult(nums.size(),0);intn=nums.size()-1;for(intleft=0,right=nums.size()-1;leftnums[right]*nums[right]){result[n--]=nums[left]*nums[left];++left;}else{result[n--]=nums[right]*nums[right];--right;}}returnresult;}};20
977.有序数组的平方:双指针法,原来数组是有序的,说明平房之后最左和最右两边的平方和是最大的,比较最大的插入新的vector数组,然后移动指针选下一个元素进行比较。classSolution{public:vectorsortedSquares(vector&nums){intleft=0;intright=nums.size()-1;intk=right;vectorres(nums.size(),0);while(left209:长度最小的子数组接下来就开始介绍数组操作中另一个重要的方法:滑动窗口。所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。在暴力解法
LeetCode977.有序数组的平方思路: 双指针应用 因为数组是有序的,数组中可能存在负数,所以其平方的最大值只可能是数组的头或尾,因此可以定义两个指针,i指向头,j指向尾。同时定义一个新数组result,让k指向新数组的最后一个元素,当nums[i]*nums[i]>=nums[j]*nums[j],result[k]=nums[i]*nums[i],k--,i++;nums[i]*nums[i]代码:classSolution{public:vectorsortedSquares(vector&nums){vectorresult(nums.size(),0);intk=n
LeetCode977.有序数组的平方思路: 双指针应用 因为数组是有序的,数组中可能存在负数,所以其平方的最大值只可能是数组的头或尾,因此可以定义两个指针,i指向头,j指向尾。同时定义一个新数组result,让k指向新数组的最后一个元素,当nums[i]*nums[i]>=nums[j]*nums[j],result[k]=nums[i]*nums[i],k--,i++;nums[i]*nums[i]代码:classSolution{public:vectorsortedSquares(vector&nums){vectorresult(nums.size(),0);intk=n