977.有序数组的平方

server/2024/10/22 2:49:57/

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

class Solution {public int[] sortedSquares(int[] nums) {// 找到绝对值最小的数下标int minIdx = -1;int min = Integer.MAX_VALUE;int len = nums.length;for(int i = 0; i < len; i++){if(min > Math.abs(nums[i])) {min = Math.abs(nums[i]);minIdx = i;}nums[i] = nums[i] * nums[i];}// 以这个最小下标为界,int max = Integer.MAX_VALUE;int l = minIdx - 1;int r = minIdx + 1;int[] ans = new int[len];ans[0] = min * min;int i = 1;// 必须满足其一,才能进入循环。当都不满足的时候,就是ans赋值完毕的时候。while(l >= 0 || r < len) {if(l == -1) {ans[i++] = nums[r++];continue;} else if(r == len) {ans[i++] = nums[l--];continue;}// if(nums[l] > nums[r]) ans[i++] = nums[r++];// else ans[i++] = nums[l--]; ans[i++] = nums[l] > nums[r] ? nums[r++] : nums[l--];}return ans;}
}

:基本相同写法(将双指针从中将最小值的下表,向两边移动)

public int[] sortedSquares(int[] nums){int n = nums.length;// 先找到绝对值最小的下标int minIdx = -1;int min = Integer.MAX_VALUE;for(int i = 0; i < n; i++){if(min > Math.abs(nums[i])) {min = Math.abs(nums[i]);minIdx = i;}// 顺便将数组的数都平方nums[i] = nums[i] * nums[i];}// 以minIdx为分界,分为左右两部分int[] ans = new int[n];ans[0] = nums[minIdx];int l = minIdx - 1, r = minIdx + 1;int i = 1;while(l >= 0 && r < n) {ans[i++] = nums[l] < nums[r] ? nums[l--] : nums[r++];}// 左部分或者右部分结束了一个if(l == -1) {while(r < n) ans[i++] = nums[r++];} else while(l >= 0) ans[i++] = nums[l--];return ans;
}

:将双指针l、r分别从头和尾向中间移动(简化了很多,不用再处理边界条件)

class Solution{public int[] sortedSquares(int[] nums){int n = nums.length;// 先找到绝对值最小的下标int minIdx = -1;int min = Integer.MAX_VALUE;for(int i = 0; i < n; i++){if(min > Math.abs(nums[i])) {min = Math.abs(nums[i]);minIdx = i;}// 顺便将数组的数都平方nums[i] = nums[i] * nums[i];}// 以minIdx为分界,分为左右两部分int[] ans = new int[n];ans[0] = nums[minIdx];int l = 0, r = n - 1;int i = n - 1;while(l < minIdx || r > minIdx) {ans[i--] = nums[l] > nums[r] ? nums[l++] : nums[r--];}return ans;}
}


http://www.ppmy.cn/server/110318.html

相关文章

从小鹏看自动驾驶发展趋势

 小鹏&#xff1a;端到端大模型量产落地&#xff0c;体验升级成下阶段主线 算法端&#xff0c;小鹏已量产国内首个端到端大模型&#xff0c;其模型采用分段式结构&#xff0c;分为神经网络 XNet、规控大模型 XPlanner 以及大语言模型 XBrain 三部分。数据闭环方面&#xff0…

GNU/Linux - RSYSLOG

Getting started with RSYSLOG in Linux 用于日志处理的 Rocket-fast 系统&#xff08;rsyslog&#xff09;是 Linux 中提供的一个系统实用程序&#xff0c;支持消息日志。它具有高性能、出色的安全性和模块化设计。这是一个非常有用的工具&#xff0c;可以接受来自各种来源的输…

003.精读《MapReduce: Simplified Data Processing on Large Clusters》

文章目录 1. 引言&#xff1a;2. 精读2.1 背景2.2 模型应用2.3 基本原理2.4 其他 3. 总结 1. 引言&#xff1a; 在本期的精读会中&#xff0c;我们将深入探讨一篇具有里程碑意义的论文——《MapReduce: Simplified Data Processing on Large Clusters》。这篇论文不仅奠定了大…

Jmeter(十四)Jmeter分布式部署测试

单个接口测试&#xff0c;我们使用谷歌的插件postman 多个接口测试&#xff0c;我们使用Jmeter进行测试 一、使用工具测试 1、使用Jmeter对接口测试 首先我们说一下为什么用Posman测试后我们还要用Jmeter做接口测试&#xff0c;在用posman测试时候会发现的是一个接口一个接…

mysql查询慢除了索引问题还会是因为什么?

问题 作为一个程序员SQL查询慢的问题在工作和面试中都是会经常遇到的问题, 一般情况下我们都会联想到索引问题, 那么除了索引问题还有什么其他的场景会导致SQL查询慢呢? MySQL执行查询逻辑 例如我们使用可视化工具执行这样一条SQL: select * from user_info where age 10;…

EtherCAT总线

EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;是一种基于以太网技术的实时工业以太网通信协议&#xff0c;由德国倍福&#xff08;Beckhoff&#xff09;公司于2003年推出。它广泛应用于工业自动化领域&#xff0c;特别是在运动控制、机器人、CN…

大数据测试怎么做,数据应用测试、数据平台测试、数据仓库测试

本期内容由中通科技高级质量工程师龙渊在公益讲座中分享&#xff0c;他从大数据测试整体介绍、数据应用测试、数据平台测试以及数据仓库测试等方面&#xff0c;与大家共同探讨了大数据测试的方法实施与落地。 以下是讲座正文&#xff1a; 今天我们分享的内容主要从大数据简介…

为什么操作内存比操作硬盘快

操作内存比操作硬盘快的原因主要与它们的工作原理和技术特性有关。以下是几个关键点解释了为什么内存访问通常比硬盘访问要快得多: 1. 存储介质的不同 内存(RAM):通常使用半导体技术,例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。这些技术允许数据在电子…