网站建设技术入股协议,免费咨询律师微信公众号,海外销售是做什么的,浦北网站建设暴力解法是平方之后排序复杂度是nnlogn 优化解法是双指针i#xff0c;j#xff0c;i放数组首元素位置#xff0c;j放数组末尾#xff0c;每次比较i和j位置的数组元素大小#xff0c;然后挑一个大的放在新的数组元素的指定末尾位置上。 当原始数组nums第一个元素大于零时nlogn 优化解法是双指针iji放数组首元素位置j放数组末尾每次比较i和j位置的数组元素大小然后挑一个大的放在新的数组元素的指定末尾位置上。 当原始数组nums第一个元素大于零时无需排序直接平方之后返回nums即可
class Solution {
public:vectorint sortedSquares(vectorint nums) {if(nums[0]0){for(auto item: nums){item*item;}return nums;}//双指针int i,j,k;vectorint ans(nums.size(),0);i0,jnums.size()-1,knums.size()-1;for(;ij;){if(nums[i]*nums[i]nums[j]*nums[j]){ans[k]nums[j]*nums[j];j--;--k;}else{ans[k]nums[i]*nums[i];i;--k;}}return ans;}
};参考链接注意看他的动画秒懂 https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html#%E6%80%9D%E8%B7%AF