力扣 LeetCode 977. 有序数组的平方(Day1:数组)

解题思路:

方法一:先平方再快排

方法二:双指针

因为可能有负数,所以对于一个数组 [ -5 , -3 , 0 , 2 , 4 ] 可以从两边向内靠拢,最大值一定出现在两端

设置指针 i 和指针 j 分别从左右两边靠拢

因为要从小到大排序,所以用 k 倒着赋值即可

java 复制代码
class Solution {
    public int[] sortedSquares(int[] nums) {
        int i = 0;
        int j = nums.length - 1;
        int k = nums.length - 1;
        int[] res = new int[nums.length];

        while (i <= j) {
            if (nums[i] * nums[i] < nums[j] * nums[j]) {
                res[k] = nums[j] * nums[j];
                k--;
                j--;
            } else {
                res[k] = nums[i] * nums[i];
                k--;
                i++;
            }
        }

        return res;
    }
}
相关推荐
小毅&Nora14 小时前
【Java线程安全实战】⑭ ForkJoinPool深度剖析:分治算法的“智能厨房“如何让并行计算跑得更快
java·算法·安全
IT陈图图14 小时前
Flutter × OpenHarmony 文件管家:数据结构设计与实现
数据结构·flutter
Swift社区14 小时前
LeetCode 380 O(1) 时间插入、删除和获取随机元素
算法·leetcode·职场和发展
budingxiaomoli14 小时前
优选算法-哈希表
数据结构·算法·散列表
高频交易dragon14 小时前
An Impulse Control Approach to Market Making in a Hawkes LOB Market从论文到生产
人工智能·算法·机器学习
平哥努力学习ing14 小时前
线性表与链表(part 1)
数据结构·链表
java修仙传15 小时前
力扣hot100:划分字母区间
算法·leetcode·职场和发展
Frank_refuel15 小时前
C++STL之set和map的接口使用介绍
数据库·c++·算法
java修仙传15 小时前
力扣hot100:跳跃游戏||
算法·leetcode·游戏
闻缺陷则喜何志丹15 小时前
【模拟】P9670 [ICPC 2022 Jinan R] Frozen Scoreboard|普及+
c++·算法·模拟·洛谷