力扣977.有序数组的平方

news/2024/10/8 22:42:13/

题目链接: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.ppmy.cn/news/1536337.html

相关文章

深入理解Web浏览器与服务器的连接过程

目录 1. 域名解析&#xff1a;找到地址 2. TCP连接&#xff1a;建立通信 3. HTTP请求&#xff1a;点菜 4. 服务器处理请求&#xff1a;厨房做菜 5. HTTP响应&#xff1a;上菜 6. 客户端接收响应&#xff1a;品尝美食 7. 关闭TCP连接&#xff1a;吃完离开 8. 持久连接&a…

WPF下使用FreeRedis操作RedisStream实现简单的消息队列

Redis Stream简介 Redis Stream是随着5.0版本发布的一种新的Redis数据类型: 高效消费者组:允许多个消费者组从同一数据流的不同部分消费数据,每个消费者组都能独立地处理消息,这样可以并行处理和提高效率。 阻塞操作:消费者可以设置阻塞操作,这样它们会在流中有新数据…

代码随想录 103. 水流问题

103. 水流问题 #include<bits/stdc.h> using namespace std;void dfs(vector<vector<int>>& mp, vector<vector<int>>& visit, int y, int x){if (visit[y][x] 1) return;visit[y][x] 1;if (y > 0){if (mp[y][x] < mp[y - 1][x…

占位,凑满减

占位&#xff0c;凑满减

OpenCV马赛克

#马赛克 import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(coins.jpg,1) imgInfo img.shape height imgInfo[0] width imgInfo[1]for m in range(200,400): #m,n表示打马赛克区域for n in range(200,400):# pixel ->10*10if m%10 0 and …

Android Studio 和 MATLAB 中 gradle无法下载或下载过慢问题的解决 2024-10-08

1.从第三方镜像下载gradle包 如 腾讯镜像站 : 腾讯软件源gradle 选择需要的版本进行下载: 这里我选择首图中需要的 gradle-7.0.2-all.zip 2.完成 将下载好的文件放置下列路径 C:\Users\Administrator(这里替换成你所使用的用户名)\.gradle\wrapper\dists 同时删除 Android…

跟我学C++中级篇——空值的定义

一、空值 在提到c/c的空值时&#xff0c;先扯远一些。谈一谈数学中的0&#xff0c;0的出现要晚于其它的数&#xff0c;而0的出现却引发了数学的极大的发展和进步。而在计算机科学中&#xff0c;在使用一个变量时&#xff0c;它的值的可能性有很多&#xff0c;其中&#xff0c;…

Vue.js 事件处理器

1. 基本用法 在 Vue.js 中&#xff0c;事件处理器可以通过 v-on 指令来绑定。你可以使用简写形式 来简化代码。 <template><button click"handleClick">点击我</button> </template><script> export default {methods: {handleClic…