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

977.有序数组的平方

作者: xxttw | 来源:发表于2023-06-27 19:15 被阅读0次
    image.png

    思路 这题目中文描述是真的2,非要反着描述, 非递减顺序的数组, 那不就是递增的数组吗

    1. 需要思考的点就是 最小的负数平方之后会发生变化, 负负得正,可能变成最大数
    2. 这样其实我们需要两个指针, 一个指向最左边, 一个指向最右边, 分别平方后,来比较他们的大小
    3. 创建一个新的数组,大小和nums一样, 创建一个索引k , 丛新数组的末位开始 k = 新数组的最大索引值
    4. 对比平方后的值, 如果if (nums[left] * nums[left] > nums[right] * nums[right]) 我们就将nums[left]的值放入新数组的最后面 k下标对应的位置 数组[k] = nums[left] *nums[left], left++ k--
    5. if (nums[left] * nums[left] <= nums[right] * nums[right]) 将nums[right]放入新数组中k--, right向前移动一位 right--
    6. 当left和right相遇时, 是同一个数, 剩下最后一位,放入新数组[k]即完成
        public int[] sortedSquares(int[] nums) {
            int[] result = new int[nums.length];
            int left = 0;
            int right = nums.length -1;
            int k = right;
            while (left <= right) {
                if (nums[left] * nums[left] > nums[right] * nums[right]) {
                    result[k--] = nums[left] * nums[left];
                    left++;
                } else {
                    result[k--] = nums[right] * nums[right];
                    right--;
                }
            }
            return result;
        }
    

    相关文章

      网友评论

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

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