力扣刷題977——有序數組的平方

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]

出版作答(python3):

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:nums_sq=[]n=0for i in nums:j=i*inums_sq.append(j)n = len(nums_sq)for i in range(n):for j in range(0, n - i - 1):if nums_sq[j] > nums_sq[j + 1]:nums_sq[j], nums_sq[j + 1] = nums_sq[j + 1], nums_sq[j]return nums_sq

提交的時候超出時間限制。先平方,之后采用手動的冒泡排序,超時。

第二版:

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:nums_sq=[]n=0for i in nums:j=i*inums_sq.append(j)nums_sq.sort()return nums_sq

題目允許調用函數,可以不手寫排序,節省時間。

最優版:

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:n = len(nums)result = [0] * nleft, right = 0, n - 1pos = n - 1while left <= right:if abs(nums[left]) > abs(nums[right]):result[pos] = nums[left] ** 2left += 1else:result[pos] = nums[right] ** 2right -= 1pos -= 1return result

雙指針法:
雙指針從兩端找平方最大值,逆序填入新數組。
1、為何逆序插入?
我們從數組兩端找最大平方值,大的數應該放在結果數組的最后面,所以我們需要從后往前插入。
最大平方值一定出現在原數組的兩端。設置雙指針從兩端開始比較
創建一個結果數組 result,長度相同,全部初始化為 0。—>result=[0]*n

大致思路:
比較兩端絕對值大小:
誰的絕對值大,說明平方后也更大;
將較大的平方放入結果數組的最后一個位置;
創建左右指針:left 指向最左,right 指向最右;移動對應指針(左邊大就 left += 1,右邊大就 right -= 1);
重復上述過程,直到左右指針相遇。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90949.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

應用加速游戲盾的安全作用

在數字娛樂產業蓬勃發展的今天&#xff0c;游戲已從單純的娛樂工具演變為連接全球數十億用戶的社交平臺與文化載體。然而&#xff0c;伴隨游戲市場的指數級增長&#xff0c;網絡攻擊的頻率與復雜性也呈爆發式上升。從DDoS攻擊導致服務器癱瘓&#xff0c;到外掛程序破壞公平競技…

linux安裝zsh,oh-my-zsh,配置zsh主題及插件的方法

這是一份非常詳細的指南&#xff0c;帶你一步步在 Linux 系統中安裝 Zsh、配置主題和安裝插件。 Zsh&#xff08;Z Shell&#xff09;是一個功能強大的 Shell&#xff0c;相比于大多數 Linux 發行版默認的 Bash&#xff0c;它提供了更強的自定義能力、更智能的自動補全、更漂亮…

【設計模式系列】策略模式vs模板模式

策略模式是什么&#xff1f;如何定義并封裝一系列算法策略模式 (Strategy Pattern)模板模式 (Template Pattern)模板模式與策略模式的深度對比與區分混合使用兩種模式的場景策略模式 (Strategy Pattern) 應用場景&#xff1a;當需要根據不同條件選擇不同算法或行為時&#xff…

aigc(1.1) opensora-2.0

open sora-2.0相關鏈接: arxiv鏈接 huggingface頁面 HunyuanVideo VAE open sora2.0的VAE模型復用了HunyuanVideo的3D VAE,HunyuanVideo的arxiv鏈接。下圖來自論文,可見VAE是一個因果注意力的3D結構。在配圖左側,視頻會被編碼為video token序列,而在配圖右側,去噪的vide…

Linux驅動21 --- FFMPEG 音頻 API

目錄 一、FFMPEG 音頻 API 1.1 解碼步驟 創建核心上下文指針 打開輸入流 獲取輸入流 獲取解碼器 初始化解碼器 創建輸入流指針 創建輸出流指針 初始化 SDL 配置音頻參數 打開音頻設備 獲取一幀數據 發送給解碼器 從解碼器獲取數據 開辟數據空間 初始化內存 音頻重采樣…

《計算機“十萬個為什么”》之 [特殊字符] 序列化與反序列化:數據打包的奇妙之旅 ??

《計算機“十萬個為什么”》之 &#x1f4e6; 序列化與反序列化&#xff1a;數據打包的奇妙之旅 ??歡迎來到計算機“十萬個為什么”系列&#xff01; 本文將以「序列化與反序列化」為主題&#xff0c;深入探討計算機世界中數據的打包與解包過程。 讓我們一起解開數據的神秘面…

機器學習與深度學習評價指標

機器學習與深度學習評價指標完全指南 ?? 為什么需要評價指標? 想象你是一位醫生,需要判斷一個診斷模型的好壞。如果模型說"這個病人有癌癥",你需要知道: 這個判斷有多準確? 會不會漏掉真正的癌癥患者? 會不會誤診健康的人? 評價指標就像是給AI模型打分的&…

Hugging Face-環境配置

打開anaconda promptconda activate pytorchpip install -i https://pypi.tuna.tsinghua.edu.cn/simple transformers datasets tokenizerspycharm找到pytorch下的python.exe#將模型下載到本地調用 from transformers import AutoModelForCausalLM,AutoTokenizer#將模型和分詞工…

cnn中池化層作用

一、池化層概述 在卷積神經網絡中&#xff0c;池化層是核心組件之一&#xff0c;主要作用是逐步降低特征圖的空間尺寸即寬和高&#xff0c;從而減少計算量、控制過擬合并增強模型的魯棒性。 核心作用 降維與減少計算量 壓縮特征圖的尺寸&#xff0c;顯著減少后續層的參數數量和…

寫一個音樂爬蟲

今天我們寫一個網易云音樂的爬蟲&#xff0c;爬取網易云音樂熱歌榜音樂鏈接并下載&#xff0c;這里用到了之前引用的BeautifulSoup和requests。 BeautifulSoup是一個Python庫&#xff0c;用于從HTML和XML文件中提取數據。它提供了一種簡單的方式來遍歷文檔樹和搜索文檔樹中的元…

戰斗公式和傷害走配置文件

故事背景&#xff0c;上次屬性計算用的配置&#xff0c;這次傷害計算也走配置&#xff0c;下面是測試代碼和測試數據local formulas {[100001]{id 100001,name "基礎傷害",formula "function (self,tag,ishit,iscritial,counterratio)\n if ishit1 then\n …

線性代數 上

文章目錄線性代數知識整理一、求行列式1、 套公式2、利用性質&#xff0c;化為可套公式3、抽象行列式4、抽象向量二、代數余子式的線性組合三、求AnA^nAn四、證明A可逆五、求A的逆1、定義法2、初等變換3、公式六、求秩七、線性表示的判定八、線性無關九、求極大線性無關組十、等…

紅帽AI推理服務器三大特點

生成式人工智能&#xff08;Gen AI&#xff09;的迅猛發展&#xff0c;對大型語言模型&#xff08;LLM&#xff09;的部署提出了更高的性能、靈活性和效率要求。無論部署在何種環境中&#xff0c;紅帽AI推理服務器都為用戶提供經過強化并獲得官方支持的vLLM發行版&#xff0c;配…

開始記錄一步步學習pcl

安裝參考&#xff0c;大神寫的非常詳細&#xff0c;一步到位 https://blog.csdn.net/qq_36812406/article/details/144307648?ops_request_misc%257B%2522request%255Fid%2522%253A%25220e215e6ac266b90ded12ed6b2eab1257%2522%252C%2522scm%2522%253A%252220140713.13010233…

Linux系統Centos7 安裝mysql5.7教程 和mysql的簡單指令

目錄 一. 安裝 MySQL 官方 Yum 倉庫 二. 安裝 MySQL 5.7 1.查看可用的mysql版本倉庫 2.啟用MySql5.7倉庫 3.禁用更高版本的倉庫&#xff08;可選&#xff09; 4.導入 MySQL GPG 公鑰 5.安裝MySql5.7 三. 啟動 MySQL 服務 1.啟動 MySQL 服務 2. 設置開機自啟 3.查看服…

嵌入式——C語言:指針③

一、函數指針和指針函數&#xff08;一&#xff09;指針函數&#xff1a;是函數&#xff0c;函數的返回值是指針1.不能返回局部變量的值2.指針函數返回的地址可以作為下一個函數調用的參數&#xff08;二&#xff09;函數指針&#xff1a;是指針&#xff0c;指針指向一個函數in…

OpenCV(05)直方圖均衡化,模板匹配,霍夫變換,圖像亮度變換,形態學變換

【OpenCV&#xff08;01&#xff09;】基本圖像操作、繪制&#xff0c;讀取視頻 【OpenCV&#xff08;02&#xff09;】圖像顏色處理&#xff0c;灰度化&#xff0c;二值化&#xff0c;仿射變換 【OpenCV&#xff08;03&#xff09;】插值方法&#xff0c;邊緣填充&#xff0…

常見的未授權訪問漏洞靶場-練習教程

一.Redis未授權訪問漏洞1.首先需要準備一個vps和vulhub靶場&#xff0c;然后進入目錄。命令:進入靶場目錄&#xff1a;cd /etc/vulhub-master/redis/4-unacc 啟動靶場&#xff1a;docker-compose up -d2.然后啟動我們kali,下載redis服務然后連接redis&#xff0c;并執行命令。…

EAP(基于事件的異步編程模式)

&#x1f4dc; 1. 核心思想 &#x1f4cc; 事件驅動解耦 異步操作通過事件通知結果&#xff0c;調用者無需阻塞線程&#xff0c;通過事件處理器響應操作完成、錯誤或取消。 &#x1f4cc; 線程池與UI線程協同 耗時操作在后臺線程池執行&#xff0c;完成后通過 SynchronizationC…

【三橋君】如何解決后端Agent和前端UI之間的交互問題?——解析AG-UI協議的神奇作用

?你好&#xff0c;我是 ?三橋君? &#x1f4cc;本文介紹&#x1f4cc; >> 一、引言 在智能體&#xff08;Agent&#xff09;領域&#xff0c;MCP、A2A、ANP等協議已經規范了Agent與工具、Agent與Agent之間的通信&#xff0c;但Agent與用戶之間的交互一直缺乏標準化。…