977. 有序数组的平方
原本直接暴力的做法没有利用到原数组是有序这个条件。这里直接把左边的绝对值大于右边的直接放到最后面,这样就减少很多不必要的操作。
class Solution { public: vector<int> sortedSquares(vector<int>& nums) { int size=nums.size(),left=0,right=size-1,pos=size-1; vector<int> res(size); while(left<=right) { if(-nums[left]>nums[right]) //根本不需要担心nums[i]变成正数的情况,因为正数也依然是-nums[left]<=nums[right] { res[pos--]=nums[left]*nums[left]; left++; } else { res[pos--]=nums[right]*nums[right]; right--; } } return res; /*int size=nums.size(); for(int i=0;i<size;i++) { nums[i]*=nums[i]; } sort(nums.begin(),nums.end()); return nums;*/ } };
标签:平方,有序,nums,vector,数组,leetcode977,size From: https://www.cnblogs.com/uacs2024/p/16738815.html