leetcode數組-有序數組的平方

題目

題目鏈接:https://leetcode.cn/problems/squares-of-a-sorted-array/
給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。

輸入:nums = [-4,-1,0,3,10]
輸出:[0,1,9,16,100]
解釋:平方后,數組變為 [16,1,0,9,100]
排序后,數組變為 [0,1,9,16,100]

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {}
};
思路及代碼
雙指針

題目解析:

  1. 數組非遞減,
  2. 元素有正負 -> 元素平方后的結果(新數組)不是有序的
  3. 輸出要求:數組非遞減,要有序

實現方法: 雙指針

  • 指針 i 指向起始位置,指針 j 指向終止位置
  • 定義一個新數組 result,和nums數組大小一樣,讓 k 指向 result數組的終止位置。
  • 如果 nums[i]*nums[i] > nums[j]* nums[j],則 result[k--] = nums[i] * nums[i]
  • 如果 nums[i]*nums[i] <= nums[j]* nums[j],則 result[k--] = nums[j] * nums[j]
#include <vector>
#include <iostream>
using namespace std;class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int k = nums.size() - 1;vector<int> result(nums.size(), 0);for(int i = 0, j = nums.size() - 1; i <= j;){if(nums[i]*nums[i] > nums[j]* nums[j]){result[k] = nums[i] * nums[i];k--;i++;}else{result[k] = nums[j]*nums[j];k--;j--;}}return result;}
};
// @lc code=endvoid printVector(vector<int>& nums){for(int i = 0; i < nums.size(); i++){cout << nums[i] << " ";}cout << endl;
}int main() {Solution obj;vector<int> vec = {-4,-3,-1,0,2,3,6,10};vector<int> res = obj.sortedSquares(vec);printVector(res);
}

時間復雜度:O(n)

總結

初始看到要使用雙指針,自己以為是使用雙指針來交換平方后的兩個元素,但正確的代碼思路并不是這樣的,正確的代碼思路更清晰明了

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

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

相關文章

基于微信小程序的醫院掛號預約系統設計與實現

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本微信小程序醫院掛號預約系統就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大…

密碼學基礎——DES算法

前面的密碼學基礎——密碼學文章中介紹了密碼學相關的概念&#xff0c;其中簡要地對稱密碼體制(也叫單鑰密碼體制、秘密密鑰體制&#xff09;進行了解釋&#xff0c;我們可以知道單鑰體制的加密密鑰和解密密鑰相同&#xff0c;單鑰密碼分為流密碼和分組密碼。 流密碼&#xff0…

Redis分布式鎖詳解

Redis分布式鎖詳解 分布式鎖是在分布式系統中實現互斥訪問共享資源的重要機制。Redis因其高性能和原子性操作特性&#xff0c;常被用來實現分布式鎖。 一、基礎實現方案 1. SETNX EXPIRE方案&#xff08;基本版&#xff09; # 加鎖 SETNX lock_key unique_value # 設置唯…

創建Linux虛擬環境并遠程連接,finalshell自定義壁紙

安裝VMware 這里不多贅述。 掛載Linux系統 1). 打開Vmware虛擬機&#xff0c;打開 編輯 -> 虛擬網絡編輯器(N) 選擇 NAT模式&#xff0c;然后選擇右下角的 更改設置。 設置子網IP為 192.168.100.0&#xff0c;然后選擇 應用 -> 確定。 解壓 CentOS7-1.zip 到一個比較大…

podman和與docker的比較 及podman使用

Podman 與 Docker 的比較和區別 架構差異 Docker&#xff1a;采用客戶端 - 服務器&#xff08;C/S&#xff09;架構&#xff0c;有一個以 root 權限運行的守護進程 dockerd 來管理容器的生命周期。客戶端&#xff08;docker 命令行工具&#xff09;與守護進程進行通信&#x…

【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介紹

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 這三個是 Java Web 開發&#xff08;Servlet/JSP&#xff09;的核心接口&#xff0c;用于處理 HTTP 請求和響應 以及 用戶會話管理。它們在 Spring MVC&#xff08;Controller&#xff09;中…

Markdown使用說明

以下是Markdown基礎使用教程及分割線展示方法&#xff1a; &#x1f4dd; Markdown基礎使用教程 1. 標題 # 一級標題 ## 二級標題 ### 三級標題2. 文本樣式 *斜體* 或 _斜體_ **加粗** 或 __加粗__ ***加粗斜體*** 或 ___加粗斜體___ ~~刪除線~~3. 列表 - 無序列表項 * 另一…

Jmeter的壓測使用

Jmeter基礎功能回顧 一、創建Jmeter腳本 1、錄制新建 &#xff08;1&#xff09;適用群體&#xff1a;初學者 2、手動創建 &#xff08;1&#xff09;需要了解Jmeter的常用組件 元件&#xff1a;多個類似功能組件的容器&#xff08;類似于類&#xff09; 各元件作用 組件…

【rabbitmq基礎】

RabbitMq基礎 1.概念2.數據隔離3.使用控制臺向mq傳遞消息1.創建兩個隊列-“測試隊列”&#xff0c;“測試隊列2”2.創建一個交換機-"測試交換機"3.測試發送消息3.1讓交換機和隊列進行綁定3.2發送消息3.3查看消息 4.創建虛擬主機5.java使用rabbitmq5.1 發送消息5.2 消…

加固計算機廠家 | 工業加固筆記本電腦廠家

北京魯成偉業科技發展有限公司&#xff08;以下簡稱“魯成偉業”&#xff09;成立于2005年&#xff0c;是集研發、生產、銷售與服務于一體的高新技術企業&#xff0c;專注于加固計算機、工業加固筆記本電腦及特種計算機的研發與制造。憑借20年的技術積累與行業深耕&#xff0c;…

鏈路聚合配置命令

技術信息 加入捆綁組&#xff0c;加大鏈路間帶寬等 配置命令 華三 靜態聚合 將接口加入聚合口后再進行配置 //創建靜態鏈路聚合口1&#xff0c;不啟用lacp[SWB]interface Bridge-Aggregation 1 [SWB-Bridge-Aggregation1]port link-type trunk [SWB-Bridge-Aggregation…

ekf-imu --- 四元數乘法符號 ? 的含義

? 表示四元數的乘法運算&#xff1a; 用于組合兩個四元數代表的旋轉。四元數乘法是非交換的&#xff08;即順序不同結果不同&#xff09;&#xff0c;其定義如下&#xff1a; 若兩個四元數分別為&#xff1a; qq0q1iq2jq3k, pp0p1ip2jp3k, 則它們的乘積為&#xff1a;4*1 …

論文閱讀Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

原文框架圖&#xff1a; 官方代碼&#xff1a; https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想記錄一下模型的推理過程 &#xff1a; %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…

OpenVLA-OFT——微調VLA的三大關鍵設計:并行解碼、動作分塊、連續動作表示以及L1回歸目標

前言 25年3.26日&#xff0c;這是一個值得紀念的日子&#xff0c;這一天&#xff0c;我司「七月在線」的定位正式升級為了&#xff1a;具身智能的場景落地與定制開發商 &#xff0c;后續則從定制開發 逐步過渡到 標準產品化 比如25年q2起&#xff0c;在定制開發之外&#xff0…

【論文閱讀】Dynamic Adversarial Patch for Evading Object Detection Models

一、介紹 這篇文章主要是針對目標檢測框架的攻擊&#xff0c;不同于現有的攻擊方法&#xff0c;該論文主要的側重點是考慮視角的變化問題&#xff0c;通過在車上布置多個顯示器&#xff0c;利用視角動態選擇哪一個顯示器播放攻擊內容&#xff0c;通過這種方法達到隱蔽與攻擊的…

多模態技術概述(一)

1.1 多模態技術簡介 1.1.1 什么是多模態 多模態(Multimodal)涉及多種不同類型數據或信號的處理和融合&#xff0c;每種數據類型或信號被稱為一種模態。常見的模態包括文本、圖像、音頻、視頻等。多模態技術旨在同時利用這些不同模態的數據&#xff0c;以實現更全面、更準確的理…

nginx2

Nginx反向代理(七層代理)、Nginx的TCP/UDP調度器(四層代理)、 一、Nginx反向代理(七層代理) 步驟&#xff1a; ? 部署后端web服務器集群 ? 配置Nginx代理服務器 ? 配置upstream集群池 ? 調節集群池權重比 <img src"/home/student/Deskt…

調用kimi api

官網支持python&#xff0c;curl和node.js 因為服務器剛好有php環境&#xff0c;所以先用curl調個普通的語音溝通api <?php // 定義 API Key 和請求地址 define(MOONSHOT_API_KEY, sk-PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgk1); define(MOONSHOT_API_URL, https://…

關于 UPDATE 語句 和 SELECT ... FOR UPDATE 的對比分析,包括語法、功能、鎖機制、使用場景及示例代碼

以下是關于 UPDATE 語句 和 SELECT ... FOR UPDATE 的對比分析&#xff0c;包括語法、功能、鎖機制、使用場景及示例代碼&#xff1a; 1. UPDATE 語句 功能 直接修改數據&#xff1a;立即更新表中的數據&#xff0c;并提交修改。無顯式鎖&#xff1a;雖然會自動加鎖&#xff…

在航電系統中提高可靠性的嵌入式軟件設計

1.總線余度設計 數據傳輸采用雙余度總線設計&#xff0c;CANFD為主&#xff0c;RS485為備。發送方將相同的數據分別通過雙總線來發送&#xff0c;接收方優先處理主線數據。由于總線上數據頻率固定&#xff0c;可設置定時器監控主總線的數據&#xff0c;當定時器超時后&#xff…