【算法——雙指針】LeetCode 283 移動零

題目描述:?

思路:

????????(雙指針) O(n)O(n)O(n)

????????給定一個數組 nums,要求我們將所有的 0 移動到數組的末尾,同時保持非零元素的相對順序。

????????如圖所示,數組nums = [0,1,0,3,12],移動完成后變成nums = [1,3,12,0,0] ,下面來講解雙指針的做法。

????????我們定義兩個指針,i指針和k指針,i指針用來遍歷整個nums數組,k指針用來放置nums數組元素。然后將非0元素按照原有的相對順序都放置到nums數組前面,剩下的位置都置為0。這樣我們就完成了0元素的移動,同時也保持了非0元素的相對順序。

具體過程如下:

  1. 定義兩個指針i和k,初始化i = 0,k = 0。
  2. i指針向后移動,遍整個nums數組,如果 nums[i] != 0,也就是說遇到了非0元素,此時我們就將nums[i]元素放置到nums[k]位置,同時k++后一位。
  3. 最后將k位置之后的元素都賦值為0。

實現細節:

遍歷數組可以使用for(int x : nums),這樣就少定義一個指針,代碼也顯得更加簡潔。

時間復雜度分析: O(n)O(n)O(n) ,nnn是數組的長度,每個位置只被遍歷一次。

時間復雜度分析: O(1)O(1)O(1) ,只需要常數的空間存放指針變量。

代碼:

class Solution {
public:void moveZeroes(vector<int>& nums) {int k = 0;for(int x : nums)if(x != 0) nums[k++] = x;while(k < nums.size())  nums[k++] = 0;        }
};

?結果:

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

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

相關文章

若依vue -【 100 ~ 更 ~ 110 】

100 主子表代碼生成詳解 1 新建數據庫表結構&#xff08;主子表&#xff09; -- ---------------------------- -- 客戶表 -- ---------------------------- drop table if exists sys_customer; create table sys_customer (customer_id bigint(20) not null…

Docker部署rabbitmq遇到的問題 Stats in management UI are disabled on this node

1. Stats in management UI are disabled on this node #進入rabbitmq容器 docker exec -it {rabbitmq容器名稱或者id} /bin/bash#進入容器后&#xff0c;cd到以下路徑 cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector false echo management_age…

談談語音助手

目錄 1.什么是語音助手 2.語音助手的發展過程 3.現在有哪些成熟的語音助手 4.語音助手對人類發展的影響 1.什么是語音助手 語音助手是一種能夠通過語音交互與用戶進行溝通和執行任務的虛擬助手。它基于人工智能和自然語言處理技術&#xff0c;能夠理解用戶的語音指令&#x…

數據結構-隊列的實現(C語言版)

前言 隊列是一種特殊的線性表&#xff0c;它只允許在一端對數據進行插入操作&#xff0c;在另一端對數據進行刪除操作的特殊線性表&#xff0c;隊列具有先進先出的&#xff08;FIFO&#xff09;的 特性&#xff0c;進行插入操作的一端稱為隊尾&#xff0c;進行刪除操作的一端稱…

JZ37序列化二叉樹

題目地址&#xff1a;序列化二叉樹_牛客題霸_牛客網 題目回顧&#xff1a; 解題思路&#xff1a; 首先&#xff0c;序列化就是將二叉樹的節點值放入一個字符串中&#xff0c;這里可以按照前序遍歷的思路來進行操作&#xff0c;謙虛遍歷是&#xff1a;根左右的情況&#xff0c;…

什么是React?React與VU的優缺點有哪些?

什么是React&#xff1f;什么是VUE&#xff1f; 維基百科上的概念解釋&#xff0c;Vue.js是一個用于創建用戶界面的開源MVVM前端JavaScript框架&#xff0c;也是一個創建單頁應用的Web應用框架。Vue.js由尤雨溪&#xff08;Evan You&#xff09;創建&#xff0c;由他和其他活躍…

Cmd部署HexoGithub443問題

git config --global http.proxy “localhost:7890” 配置下代理即可 本文由 mdnice 多平臺發布

微信小程序 地圖map(電子圍欄圓形和多邊形)

正常情況下是沒有手機上畫電子圍欄的&#xff0c;公共平臺上我也沒找到&#xff0c;所以走了一個歪點子&#xff0c;就是給地圖添加點擊事件&#xff0c;記錄點的位置&#xff0c;在畫到電子圍欄上就是添加電子圍欄了&#xff0c;如果只是顯示電子圍欄就簡單了 一、多邊形電子…

2023.8.12號論文閱讀

文章目錄 TriFormer: A Multi-modal Transformer Framework For Mild Cognitive Impairment Conversion Prediction摘要本文方法實驗結果 SwIPE: Efficient and Robust Medical Image Segmentation with Implicit Patch Embeddings摘要本文方法實驗結果 TriFormer: A Multi-mod…

macos搭建python3虛擬環境

我們知道macos自帶的python版本是Python2.7, 這個版本比較老而且往往和我們的工程不兼容&#xff0c;所以就得需要我們升級Python版本&#xff0c; 我們不建議直接升級macos自帶的本地Python2.7, 因為macos有一些基礎軟件是依賴于Python2.7的&#xff0c;如果動了遇到問題想再…

日志框架及其使用方法

log4j和logBack,同一個人寫的&#xff0c;logBack為log4j的升級版&#xff0c;SpringBoot中默認集成logBack 作用&#xff1a;記錄軟件發布后的一些bug,以及數據是怎樣被操作的 傳統開發弊端&#xff1a; 1.日志直接輸出在控制臺&#xff0c;關閉控制臺后&#xff0c;日志消…

Netty:在一個ByteBuf中尋找另外一個ByteBuf出現的位置

說明 利用ByteBufUtil的indexOf(ByteBuf needle, ByteBuf haystack)函數可以在haystack中尋找needle出現的位置。如果沒有找到&#xff0c;返回-1。 示例 在一個ByteBuf 中找到了另外一個ByteBuf package com.thb;import io.netty.buffer.ByteBuf; import io.netty.buffer.…

Linux: network: tools: tcpdump,抓取vlan包需要注意的事情;不然會出現LLC協議

https://bugzilla.redhat.com/show_bug.cgi?id498981#c4 https://serverfault.com/questions/544651/vlan-tags-not-shown-in-packet-capture-linux-via-tcpdump 如果不加-e參數&#xff0c;抓取不到 vlan信息&#xff0c;會導致wireshark解析出現問題。因為&#xff0c;抓到…

AirServer是什么軟件,手機屏幕投屏電腦神器

什么是 AirServer&#xff1f; AirServer 是適用于 Mac 和 PC 的先進的屏幕鏡像接收器。 它允許您接收 AirPlay 和 Google Cast 流&#xff0c;類似于 Apple TV 或 Chromecast 設備。AirServer 可以將一個簡單的大屏幕或投影儀變成一個通用的屏幕鏡像接收器 &#xff0c;是一款…

PDF Expert 3.3 for mac

PDF Expert是一款專業的PDF編輯和閱讀工具。它可以幫助用戶在Mac、iPad和iPhone等設備上查看、注釋、編輯、填寫和簽署PDF文檔。 以下是PDF Expert的特點&#xff1a; PDF編輯&#xff1a;PDF Expert提供了豐富的PDF編輯功能&#xff0c;包括添加、刪除、移動、旋轉、縮放、裁…

《貧窮的本質》閱讀筆記

《貧窮的本質》閱讀筆記 2023年8月11日在杭州小屋讀完&#xff0c;對于窮&#xff0c;我可有太多想說的了。可以說自己活這么大以來&#xff0c;一直在擺脫貧窮&#xff0c;也將會窮盡一生去避免貧窮。作為一個窮人該如何去擺脫貧窮&#xff0c;我覺得沒有一個確切的答案&#…

windows 安裝免費3用戶ccproxy ubuntu 代理上網

Windows 上進行安裝 ubuntu 上進行設置 方法一 (臨時的手段) 如果僅僅是暫時需要通過http代理使用apt-get&#xff0c;您可以使用這種方式。 在使用apt-get之前&#xff0c;在終端中輸入以下命令&#xff08;根據您的實際情況替換yourproxyaddress和proxyport&#xff09;。 終…

Linux防火墻firewalldiptables(2)iptables開放指定端口開放指定端口

一、CentOs6 iptables基本操作 # chkconfig --list | grep iptables 查看防火墻的服務 # chkconfig iptables off 永久關閉防火墻 #chkconfig iptables on 永久開啟防火墻# service status iptables 查看防火墻狀態 # service start iptables 啟動防火墻 # service stop ipta…

HCIA---路由器--靜態路由

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 目錄 前言 一.路由器簡介 二.路由器轉發原理 三.骨干鏈路 四.路由分類 五.靜態路由 六.靜態路由拓展配置 一.負載均衡 二.環回接口 三.手工匯總 四.路由黑洞 五.缺…

【分布式存儲】數據存儲和檢索~B+樹

為什么數據存儲結構重要 在存儲系統中&#xff0c;其實不管數據是什么樣的&#xff0c;歸根結底其實都還是取決于數據的底層存儲結構&#xff0c;而主要常見的就是數據庫索引結構&#xff0c;B樹、Redis中跳表、以及LSM、搜索引擎中的倒排索引。本質都是如何利用不用的數據結構…