小菜认真刷力扣——“997.有序数组的平方”形象解释

js怎么写计算平方的代码 参考文章: http://www.theicstock.com/gonglve/1044.html。实现结果:计算平方根结果。 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

包含两种解法,暴力排序和利用原数组的非递减性质采用双指针进行排序。

题目描述

链接: 997.有序数组的平方
给你一个按 非递减顺序 排序的整数数组 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 已按 非递减顺序 排序

进阶:

请你设计时间复杂度为 O(n) 的算法解决本问题


一、暴力排序

解题思路

先进行平方,在进行正常的数组排序。

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* sortedSquares(int* nums, int numsSize, int* returnSize) {
    // 先将整个数组进行平方
    for(int i = 0; i < numsSize; i++){
        nums[i] = nums[i] * nums[i];
    }
    // 冒泡排序
    for(int i = numsSize - 1; i > 0 ; i--){
        for(int j = 0; j < i; j++){
            if(nums[j] > nums[j+1]){
                int tmp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = tmp;
            }
        }
    }
    *returnSize = numsSize;
    return nums;
}

二、双指针

1.解题思路

原数组具有非递减的性质,而最后要得到的数组也是一个非递减数组。利用这一良好性质,可将算法进行优化。
如原数组中都为非负数,则平方后的数组元素顺序无需改变。因此我们需要重点考虑的就是,原数组中存在负数元素的情况。
如果原数组中存在负数,平方后很可能成为和数组正数部分的元素相比较大的那个。这时候,若要正确排序,涉及到大量元素的移动,为方便需要创建一个新的数组。注意这里的新数组创建需要将动态分配数组空间。

2.形象理解

如下图所示,平方后的数组元素整体呈现一个了“两头重中间轻”的状态。最大的数组元素不是在最左侧就是在最右侧,对此我们创建两个指针“left”和“right”来指向数组的最左侧和最右侧。比较“left”和“right”所指向的元素,较大的那一个即为最大的数组元素,将此元素赋值给新数组。若较大的数组元素为“left”所指的,则下一步将“left”右移;否则将“right”左移,直到将新数组填满。
在这里插入图片描述

3.代码

代码如下:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* sortedSquares(int* nums, int numsSize, int* returnSize) {
    int left, right;
    int* ans = (int*)malloc(sizeof(int) * numsSize); // 动态分配数组空间
    left = 0;
    right = numsSize - 1;
    int idx = numsSize - 1;
    while(left <= right){
        if(nums[left]*nums[left] >= nums[right]*nums[right]){
            ans[idx] = nums[left]*nums[left];
            left++;
        }else{
            ans[idx] = nums[right]*nums[right];
            right--;
        }
        idx--;
    }
    *returnSize = numsSize;
    return ans;
}
JavaScript 计算平方值 在JavaScript中,我们可以使用简单的代码来计算一个数字的平方值。平方是将一个数字乘以自身的操作,可以通过使用乘法运算符(*)来实现。无论是使用乘法运算符还是指数运算符,都可以方便地计算一个数字的平方值。除了使用乘法运算符,还可以使用指数运算符(**)来计算平方值。,并将其设置为要计算平方的数字,这里我们选择了数字5作为示例。这段代码与之前的示例代码相同,只是使用了指数运算符。乘以自身,得到平方值,并将结果存储在变量。如果你想计算不同数字的平方值,只需修改。,因为7的平方是49。 阅读详情

相关推荐

金融风控实战:用Python从零搭建贷款违约预测模型(附完整数据集)

本文详细介绍了如何使用Python从零构建金融风控中的贷款违约预测模型,涵盖数据清洗、特征工程、模型构建与评估等全流程。通过实战案例展示逻辑回归、XGBoost和LightGBM三大算法的对比,特别强调AUC-ROC指标在金融风控中的重要性,并附完整数据集和代码实现。

weixin_29175469的博客 237

js——计算平方

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><script> function pf() { //获取文本框 var input= document.getElementById...

1557

从安装Eclipse 开始 开发第一个 CDS View

一篇超级简单快速的 创建CDS VIEW 入门步骤介绍文章。

IT小职员 4249

有序数组的平方(力扣)(冒泡排序)

给你一个按 非递减顺序 排序的整数数组 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 &.

txwhmeng的博客 587

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2529

【微信小程序-uniapp】CustomPicker 自定义单项选择器组件

自定义底部弹出框单项选择器组件,适用于uniapp小程序

Komorebi_00的博客 1532

977. 有序数组的平方

977. 有序数组的平方 示例 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] 思考 简单题嘎嘎乱杀! 双指针法 leftPoint:指向最左端 rightPoint:指向最右端 利用两个指针比较出最大值并保存到新创建的数值ints中,移动指针,直到完全遍历数组 cl

小菜鸡 286

一文搞懂YOLO各版本差异:v5易用、v8多任务、v10低延迟,该怎么选?

YOLOv5的“易用”是为了降低入门门槛,适合新手启蒙和旧项目维护;YOLOv8的“多任务”是为了满足工业需求,成为目前的主流版本;YOLOv10的“低延迟”是为了适配边缘计算,代表未来的发展趋势。选型的核心不是“选最新的”,而是“选最适合自己场景的”。记住选型口诀,按场景对号入座,就能避开99%的坑。希望这篇文章能帮你彻底搞懂各版本差异,选对属于自己的YOLO版本!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1169

Leetcode 977.有序数组的平方

/* 给你一个按 非递减顺序 排序的整数数组 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 &

前路浩浩荡荡,万物皆可期待 355

74.9008深度刷机原理|高通QPST/Firehose底层刷写协议详解

移动设备刷机与底层维修技术指南 本文为移动设备维修人员和高级玩家提供全面的刷机与底层维修技术指南,涵盖高通、联发科和苹果A系列芯片的主要操作。 主要内容 核心操作:Bootloader解锁、Fastboot刷写、EDL深度修复、iTunes DFU模式恢复和分区表重建 适用场景:系统故障修复、底层损坏恢复、安全限制解除、系统降级和深度硬件维修 关键技术:详细解析刷机协议栈层级、关键分区作用和刷机安全机制 操作步骤: 环境搭建与驱动安装 Bootloader解锁(以小米为例) 高通机型系统刷写 苹果设备DFU

2601_95651806的博客 205

YOLOv13改进策略【多YAML融合】| HWD + DSC3k2_PConv + Detect_MBConv

本文记录的是利用HWD + DSC3k2_PConv + Detect_MBConv改进YOLOv13,分别涉及骨干、颈部和检测头部分的改进。一方面按照此配置,其工作量及创新程度能够满足论文发表的需求,另一方面是一些难以融合多个YAML的举例,以帮助大家理解如何将多个YAML整合到一个YAML中。小波下采样:一个简单但有效的语义分割下采样模块。块由两个主要块组成:无损特征编码块和特征表示学习块。HWD模块与其他下采样模块对比:保留信息能力:传统的下采样方法(如最大池化、平均池化和步幅卷积等)会导致信息丢失,

Limiiiing的博客 496

js中平方怎么表示

js中平方怎么表示 console.log(Math.pow(7, 2)); // expected output: 49i Math.pow(3,2) 3的二次方

cxu123321的博客 1万+

OpenClaw第2章:快速安装

本章将手把手教你安装 OpenClaw。

Maynor的博客 3236

JavaScript计算平方数的三种方法

JavaScript计算平方数的三种方法

赣州博讯科技工作室的博客 368

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣LeetCode977:有序数组的平方(python)

力扣997:有序数组的平方,有四种解法,都有详细的解答,还有一些细节提醒,可以收藏再看

diemeng9339的博客 1901

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

题解——两种算法解Leetcode题库第977题(暨双指针法小结)

Leetcode第977题题解

weixin_54049495的博客 316

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

977.有序数组的平方

示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]最容易想到且最暴力的解法就是先将每个数平方,之后再排个序。优雅的思路是使用双指针,从两端不断找最大值。

qq_46130027的博客 391

leetcode:977. 有序数组的平方

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 暴力破解 先开方,再排序 public static int[] sortedSquares(int[] A) { int[] ans = new int[A.length]; for (int i = 0; i < A.len...

OceanStar的博客 368

JavaScript——计算平方值

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>计算平方</title> <script> function pf(){ var input = document.getElementById("num"); //console.log(input); //获

sfz1234567890的博客 4004

【LeetCode977.有序数组的平方】——双指针法

【LeetCode977.有序数组的平方】——双指针法

weixin_51630192的博客 446

LeetCode977.有序数组的平方(双指针法、暴力法、列表推导式)

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

liuxudanhahaha的博客 1905

【LeetCode】977. 有序数组的平方(简单)——代码随想录算法训练营Day02

【LeetCode】977.有序数组的平方

晴雪月乔的博客 538

【LeetCode刷题】977. 有序数组的平方

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

weixin_48323589的博客 523

2020-10-16 有序数组的平方

977. 有序数组的平方 难度简单132收藏分享切换为英文接收动态反馈 给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2: 输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121] 提示: 1 <= A.length <= 10000 -10000 <= A[i] <= 10000 ...

nqcqwer的博客 254
上一篇: 水仙花数 倒三角形 分数化小数
下一篇: 力扣46.全排列
JZihui
博客等级 码龄6年 170粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值