代码随想录算法训练营第二天| 977.有序数组的平方 、 209.长度最小的子数组、59.螺旋矩阵II

发布时间 2023-06-08 23:58:24作者: 博二爷

977.有序数组的平方

    • 1,因为是有序数组,所以会导致,两边大,中间小
    • 2,又因为要排序所以可以仿照这个特点
    • 3,从首尾两端,进行排序
  •   代码:
  •  1 //平方之后,列顺序 从低到高
     2 vector<int> sortedSquares(vector<int>& nums) 
     3 {
     4     vector<int> result(nums.size());
     5     int resultId = nums.size() - 1;
     6 
     7     //因为有序数组,所以他是两边最大,中间最小,所以可以 从两边往里,找出来最大的数值
     8     //注意可以不加 l++ r --
     9     for (int l = 0, r = nums.size() - 1; l <= r;)
    10     {
    11         int l_sq = nums[l] * nums[l];
    12         int r_sq = nums[r] * nums[r];
    13         if (l_sq > r_sq)
    14         {
    15             result[resultId] = l_sq;
    16             l++;
    17         }
    18         else //如果等于的话,是社么情况
    19         {
    20             result[resultId] = r_sq;
    21             r--;
    22         }
    23         resultId--;
    24     }
    25 
    26     return result;
    27 }