• 977 有序数组的平方


    1、题目

    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
     
    示例 1:
    输入:[-4,-1,0,3,10]
    输出:[0,1,9,16,100]

    示例 2:
    输入:[-7,-3,2,3,11]
    输出:[4,9,9,49,121]
    2、思路
    • 自己的思路
      • 先把每个元素平方
      • 内置函数sort排序
    • 双指针法(时间复杂度低很多)
      • 因为输入的 数组是排好序的,所以最大值一定在数组两端
      • 新建一个vector存放排序后的数组
      • 建立双指针分别指向原数组的头尾,然后建立一个指针指向新数组的尾部
      • 比较原数组首尾两个元素的大小,大的存放新数组里,然后移动指针
      • 结束标志就是指向新数组的指针到达了数组的头部

    3、代码

         自己的思路:

       

     1 class Solution {
     2 public:
     3     vector<int> sortedSquares(vector<int>& A) {
     4         for(int i=0;i<A.size();i++){
     5             A[i]=A[i]*A[i];
     6         }
     7         sort(A.begin(),A.end());
     8         return A;
     9     }
    10 };

          双指针法 :

         

     1 class Solution {
     2 public:
     3     vector<int> sortedSquares(vector<int>& A) {
     4         int length = A.size();
     5         vector<int> ans(length);
     6         int i = 0, j = length - 1,k = length - 1;
     7         while(k>=0){
     8             if(A[i]*A[i]>=A[j]*A[j]){
     9                 ans[k]=A[i]*A[i];
    10                 i++;
    11             }
    12             else{
    13                 ans[k]=A[j]*A[j];
    14                 j--;
    15             }
    16             k--;
    17         }
    18         return ans;
    19     }
    20 };
  • 相关阅读:
    canvasnode的设计思路和api介绍
    希望新浪网络学院的童鞋们加油
    和新童鞋们吃饭,见到了jeremy
    MongoDB 学习资料
    [转] Scrum框架及其背后的原则
    twisted学习资料
    创建课程表
    进程
    协程
    支付宝支付流程
  • 原文地址:https://www.cnblogs.com/hehesunshine/p/11699390.html
Copyright © 2020-2023  润新知