● 今日學習的文章鏈接和視頻鏈接
● 自己看到題目的第一想法
977.有序數組的平方
方法一:
思路:
- 先將數據所有數據平方
- 將數組排序
代碼:
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> res(nums.size(),0);for(int i=0; i<res.size(); i++){cout<<res[i]<<endl;}for(int i=0; i<nums.size(); i++){nums[i] = nums[i]*nums[i];cout<<nums[i]<<endl;}sort(nums.begin(), nums.end());return nums;}
};
方法二:
思路:
利用雙指針,有序數組平方后兩邊最大,中間最小。
- 定義left =0; right = nums.size()-1;
- 新開一個數組res, 大小為nums.size(), 初始值為0, k指向res最后的下標;
- 比較nums[left]*nums[left] 與 nums[right]*nums[right] 的大小
- 大的放在res[k]的位置, k–,
- 返回 res;
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int>res(nums.size(), 0);int left = 0;int right = nums.size()-1;while(left<=right){for(int k = res.size()-1; k>=0; k--){if(nums[left]*nums[left] > nums[right]*nums[right]){res[k]=nums[left]*nums[left];left++;}else{res[k] = nums[right]*nums[right];right--;}}}return res;}
};