每日一题 --- 977. 有序数组的平方[力扣][Go]

news/2024/4/27 13:47:43

今天这一题和昨天的知识点是一样的,就是双指针法
题目:

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

在这里插入图片描述

刚开始我的思路:

func sortedSquares(nums []int) []int {f, r := 0, len(nums)-1var arr = []int{}for f <= r {ones := nums[r] * nums[r]twos := nums[f] * nums[f]if ones <= twos {arr = insertHead(arr, twos)f++} else {arr = insertHead(arr, ones)r--}}return arr
}func insertHead(arr []int, n int) []int {arr = append([]int{n}, arr...)return arr
}

结果时间复杂度O(n²),因为头插需要O(n)。
在这里插入图片描述

代码随想录中有O(log(n))的解法,有兴趣的可以去看看。

链接放这里了:代码随想录 (programmercarl.com)

不过咱们还是直接看O(n)的算法实现吧。

// 双指针
func sortedSquares(nums []int) []int {Len := len(nums)f, r := 0, Len-1arr := make([]int, Len)k := rfor k >= 0 {ones := nums[r] * nums[r]twos := nums[f] * nums[f]if ones >= twos {arr[k] = onesr--} else {arr[k] = twosf++}k--}return arr
}

从两头开始标记,指针平方大的先复制再往里走,直到所有值赋完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10965.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Django验证码(二)

一、生成图片 1.1、说明 通过pillow模板库生成图片,步骤如下 安装pillow模板建立 生成验证码内容 方法建立 生成验证码颜色 方法建立 生成验证码 方法1.2、需要安装 Pillow 库 pip install Pillow==9.3.01.3、生成验证码内容 import randomdef random_str(length=4):"…

Java学习笔记(17)

集合进阶 单列集合 Collection List set Add clear remove contains isempty size Add方法可能也会添加失败 同理&#xff0c;可能删除失败 Contains细节 为什么要重写equals&#xff1f; 因为contains底层用的是object类中的equals方法&#xff0c;比较的是地址值&#xf…

目标检测——PP-YOLO算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

微服务day05(中) -- ES索引库操作

索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型&#xff0c;…

日志监控之 Grafana+Promtail+Loki

主要解决问题&#xff1a;项目负载均衡后&#xff0c;日志文件分散在多个位置&#xff0c;需要登录主机查看日志文件&#xff0c;在不确定那一个节点记录日志的情况下&#xff0c;很不方便&#xff0c;因此&#xff0c;使用GrafanaPromtailLoki的访问收集到同一个服务上。&…

uni-app打包证书android

Android平台打包发布apk应用&#xff0c;需要使用数字证书&#xff08;.keystore文件&#xff09;进行签名&#xff0c;用于表明开发者身份。 Android证书的生成是自助和免费的&#xff0c;不需要审批或付费。 可以使用JRE环境中的keytool命令生成。 以下是windows平台生成证…