成都網(wǎng)站建設(shè) 四川冠辰科技公司建站平臺(tái)如何隱藏技術(shù)支持
一個(gè)數(shù)組,返回一個(gè)所有元素的平方之后依然是一個(gè)有序數(shù)組。(數(shù)組中含負(fù)數(shù))
解法一:暴力解法
? ? ? ? 所有元素平方后再使用快速排序法重新排序,時(shí)間復(fù)雜度為O(nlogn)。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {for(int i = 0; i < nums.size(); i++){nums[i] *= nums[i];}//快速排序sort(nums.begin(), nums.end());return nums;}
};
解法二:雙指針
? ? ? ? 思路:最大數(shù)一定在這個(gè)數(shù)組的兩邊,不可能在中間。利用兩個(gè)指針從兩邊逐步向中間靠攏的過程,得到一個(gè)由大到小的數(shù)組。得到由小到大的數(shù)組,就是在更新新的數(shù)組時(shí),下標(biāo)由大到小來進(jìn)行更新。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> result(nums.size(), 0);int k = nums.size() - 1;for(int i = 0, j = nums.size() - 1; i <= j;){if(nums[i] * nums[i] > nums[j] * nums[j]){result[k] = nums[i] * nums[i];k--;i++;}else{result[k] = nums[j] * nums[j];k--;j--;}}return result;}
};