代码随想录打卡day2

原文链接

Problem: 977. 有序数组的平方

思路

双指针

解题方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rr4QeJ5k-1679043787275)(https://pic.leetcode.cn/1679033780-WDpnXg-%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230317141540.jpg)]

复杂度

  • 时间复杂度:
    O ( n ) O(n) O(n)
  • 空间复杂度:
    O ( 1 ) O(1) O(1)

Code

//暴力AC
class Solution {
    public int[] sortedSquares(int[] nums) {
        int length = nums.length;
        for(int i = 0;i < length;i++){
            nums[i] = nums[i] * nums[i];
        }
        Arrays.sort(nums);
        return nums;
    }
}
//双指针
class Solution {
    public int[] sortedSquares(int[] nums) {
        int length = nums.length;
        int[] arr = new int[length];
        int left = 0, right = length - 1;
        int arrIndex = length - 1;
//因为指针是从两头往中间,所以数组下标更新是从右往左,这样按从左往右就是从大到小了
        for(;left <= right;){
            if(nums[left] * nums[left] < nums[right] * nums[right]){
                arr[arrIndex--] = nums[right] * nums[right];
                right--;
            }else{
                arr[arrIndex--] = nums[left] * nums[left];
                left++;
            }
        }
        nums = arr;
        return nums;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值