美文网首页
有序数组的平方

有序数组的平方

作者: WAI_f | 来源:发表于2020-07-04 16:16 被阅读0次

题目:

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例:

输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]

解题方法:

这道题如果用排序的话,其实写起来还是挺简单的,遍历一遍做平方处理,然后直接调用排序函数就得到结果了,测试了一下,反正没超时。但是结果肯定不满意啦,所以做了一些改进,主要思路如下:

  • 遍历,平方处理;
  • 找到数组的最小值所在位置,因为在平方之前已经是非递减的,所以平方之后,最小值就出现在:A[i]<A[i+1]第一次出现的位置。
  • 然后就是从最小值两边开始进行排序,在最小值坐标是递减的数组,右边是递增的数组,所以遍历完两边的数组就完成了排序。

代码和结果:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& A) {
        int len=A.size();
        vector<int> B(len);
        for(int i=0;i<len;i++)
        {
            A[i]=A[i]*A[i];
        }
        int midx=len-1;
        for(int i=0;i<len-1;i++)
        {
            if(A[i]<A[i+1])
            {
                midx=i;
                break;
            }
        }
        
        int m=midx-1;
        int n=midx+1;
        B[0]=A[midx];
        int k=1;
        while(m>=0&&n<len)
        {
            if(A[m]<A[n])
            {
                B[k]=A[m];
                m--;
                k++;
            }
            else
            {
                B[k]=A[n];
                n++;
                k++;
            }
        }

        while(m>=0)
        {
            B[k]=A[m];
            m--;
            k++;
        }
        while(n<len)
        {
            B[k]=A[n];
            n++;
            k++;
        }

        return B;
    }
};
运行结果:

原题链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/

相关文章

  • 有序数组的平方

    题目: 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例: ...

  • 有序数组的平方

    题目描述 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 ...

  • 有序数组的平方

    题目: 题目的理解: 分两步:1. 计算每一个数字的平方值。 2. 再对数字进行排序。 python实现 提交 /...

  • 有序数组的平方

    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入...

  • LeetCode 每日一题 [33] 有序数组的平方

    LeetCode 有序数组的平方 [简单] 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组...

  • 第 2 天 双指针

    977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组...

  • ARTS Week 01

    Algorithm 题目 977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的...

  • 977. 有序数组的平方

    //977. 有序数组的平方https://leetcode-cn.com/problems/squares-of...

  • 977. 有序数组的平方

    977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺...

  • 977. 有序数组的平方

    【题目描述】给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 【示...

网友评论

      本文标题:有序数组的平方

      本文链接:https://www.haomeiwen.com/subject/gmvuqktx.html