当前位置: 首页 > article >正文

力扣977.有序数组的平方

题目链接:977. 有序数组的平方 - 力扣(LeetCode)

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

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

提示:

  • 1 <= nums.length <= 104

  • -104 <= nums[i] <= 104

  • nums 已按 非递减顺序 排序

暴力排序:

java:

class Solution {
    public int[] sortedSquares(int[] nums) {
        for(int i=0;i<nums.length;i++){
            nums[i]=nums[i]*=nums[i];
        }
        Arrays.sort(nums);
        return nums;
    }
}

C++: 

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        for(int i=0;i<nums.size();i++){
            nums[i]=nums[i]*=nums[i];
        }
        sort(nums.begin(),nums.end());
        return nums;
    }
};

双指针法:

由于所给的nums数组是排好序的,所以最大值会出现在数组两端,使用双指针从两端向中间遍历,从尾到头(数值从大到小)更新数组

class Solution {
    public int[] sortedSquares(int[] nums) {
        //双指针法
        int left = 0;
        int right = nums.length - 1;
        int k = nums.length - 1;
        int[] ans = new int[nums.length];
        while (left <= right) {
            if (nums[left] * nums[left] >= nums[right] * nums[right]) {
                ans[k] = nums[left] * nums[left];
                k--;
                left++;
            } else {
                ans[k] = nums[right] * nums[right];
                k--;
                right--;
            }
        }
        return ans;
    }
}

http://www.kler.cn/news/335970.html

相关文章:

  • 【Python】Python-JOSE:Python 中的 JSON Web Token 处理库
  • Neo4j CQL语句 使用教程
  • 【微服务】服务注册与发现 - Eureka(day3)
  • 【MYSQL】mysql约束---自增长约束(auto_increment)
  • macOS .bash_profile配置文件优化记录
  • 基于pytorch的手写数字识别
  • 汇编内存寻址
  • 【C语言进阶教程】编译器优化
  • 滚雪球学Oracle[1.3讲]:内存与进程架构
  • 开发指南067-单元测试
  • 03 掌握Docker核心架构:镜像、仓库、容器及运行管理的深度解析
  • [运维]2.elasticsearch-svc连接问题
  • Solidity智能合约调用其他合约的三种主要方式
  • 类的特殊成员函数——三之法则、五之法则、零之法则
  • 《Windows PE》4.1.4 手工重构导入表
  • 数据结构——七种排序(java)实现
  • AI类课程的笔记
  • 租拼车平台|小区租拼车管理|基于java的小区租拼车管理信息系统小程序设计与实现(源码+数据库+文档)
  • 线性代数杂谈(1)——基础矩阵
  • Java中循环练习题