zoukankan      html  css  js  c++  java
  • 0977. Squares of a Sorted Array (E)

    Squares of a Sorted Array (E)

    题目

    Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

    Example 1:

    Input: nums = [-4,-1,0,3,10]
    Output: [0,1,9,16,100]
    Explanation: After squaring, the array becomes [16,1,0,9,100].
    After sorting, it becomes [0,1,9,16,100].
    

    Example 2:

    Input: nums = [-7,-3,2,3,11]
    Output: [4,9,9,49,121]
    

    Constraints:

    • 1 <= nums.length <= 104
    • -104 <= nums[i] <= 104
    • nums is sorted in non-decreasing order.

    题意

    将递增数组内的数字取平方后再按照大小进行排序。

    思路

    因为原数组是递增的,所以最大的平方数一定出现在两边。直接用双指针指向两端,用类似归并排序的方法将平方数按照从大到小的顺序插入到结果数组中。


    代码实现

    Java

    class Solution {
        public int[] sortedSquares(int[] nums) {
            int[] ans = new int[nums.length];
            int i = nums.length - 1;
            int left = 0, right = nums.length - 1;
            
            while (left <= right) {
                int leftSquare = nums[left] * nums[left];
                int rightSquare = nums[right] * nums[right];
                
                if (leftSquare >= rightSquare) {
                    ans[i--] = leftSquare;
                    left++;
                } else {
                    ans[i--] = rightSquare;
                    right--;
                }
            }
            
            return ans;
        }
    }
    
  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/mapoos/p/14139611.html
Copyright © 2011-2022 走看看