python每日一題——4移動0

題目

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

請注意 ,必須在不復制數組的情況下原地對數組進行操作。

示例 1:

輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]
示例 2:

輸入: nums = [0]
輸出: [0]

答案

這道題可以使用雙指針的方法解決,一個指針用來遍歷數組,一個指針用來記錄0的末尾位置。

具體步驟如下:

定義兩個指針,一個指向當前遍歷的位置,一個指向0的末尾位置。
遍歷數組,如果當前元素為0,則將其移動到0的末尾位置,并將0的末尾位置指針向前移動一位。
如果當前元素不為0,則將其移動到當前位置,并將當前位置指針向前移動一位。
重復上述步驟,直到遍歷完整個數組。
代碼如下:

def moveZeroes(nums):  if not nums:  return []  left = 0  # 當前遍歷位置指針  right = 0  # 0的末尾位置指針  n = len(nums)  while left < n:  if nums[left] == 0:  nums[left], nums[right] = nums[right], nums[left]  right += 1  else:  nums[left] = nums[left] + 1  # 非零元素加上一個非零值,保證相對順序不變  left += 1  return nums

時間復雜度為O(n),空間復雜度為O(1)。

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

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

相關文章

Go 語言中的 Switch 語句詳解

switch語句 使用switch語句來選擇要執行的多個代碼塊中的一個。 在Go中的switch語句類似于C、C、Java、JavaScript和PHP中的switch語句。不同之處在于它只執行匹配的case&#xff0c;因此不需要使用break語句。 單一case的switch語法 switch 表達式 { case x:// 代碼塊 cas…

web前端開發基礎------外邊距折疊現象

引言 在設置樣式時&#xff0c;需要遵循先整體再細節&#xff0c;先通用樣式再特殊樣式的順序進行設置 一&#xff0c;什么是外邊距折疊現象呢&#xff1f; 外邊距折疊 定義&#xff1a; 外邊距折疊是指相鄰的兩個或者多個外邊距&#xff08;margin&#xff09;在垂直方向會合并…

Python入門學習篇(二)——算術運算符

1 算術運算符 1.1 分類 類型含義示例注意事項加號12?3“12”“3"?"123”數值之間,是加法運算(True為1,False為0)字符串之間,是進行拼接數值和字符串之間是不可以使用加法運算的,會報錯-減號1-2?-1*乘號2*3?6/除法2/1?2.0除法的結果永遠為小數%取余10%2?0//取…

SAP 預付款清賬程序

預付款批量清賬程序&#xff0c;也是來自于網上&#xff0c;稍微改了一下。依據付款參考清賬。 原文參考&#xff1a;【ABAP】供應商、客戶的特殊總賬和非特殊總賬清賬_sap f-44 bapi-CSDN博客 &---------------------------------------------------------------------*…

老生常談 - 從輸入URL到頁面加載的過程(詳細版)

從輸入URL到頁面加載的過程 之前一直都是直接看一下總結的八股文章&#xff0c;對于實際的整個鏈路并不是特別熟悉&#xff0c;這次花了一天多的時間看了很多資料&#xff0c;對于整個頁面加載的流程有了自己的理解&#xff0c;從前端開始訪問的瀏覽器多線程、緩存等問題&#…

5-11一個球從100米自由落下

#include<stdio.h> int main(){double down100;double back down/2;int n;//次數for(n2;n<10;n){downdownback*2;backback/2; }printf("第10次落地經過%f米\n",down);printf("第10次反彈%f米\n",back);return 0;}

href和src的區別

1、請求資源類型不同 &#xff08;1&#xff09; href是Hypertext Reference的縮寫&#xff0c;表示超文本引用。用來建立當前元素和文檔之間的鏈接。常用的有&#xff1a;link、a。 &#xff08;2&#xff09;在請求 src 資源時會將其指向的資源下載并應用到文檔中&#xff0…

分布式事務seata的AT模式介紹

分布式事務seata的AT模式介紹 seata是阿里開源的一款分布式事務解決方案&#xff0c;致力于提供高性能和簡單易用的分布式事務服務。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式&#xff0c;本文主要介紹AT模式的使用。 seata安裝 下載seata服務&#xff0c;官方地址…

測試數據不會造?可以用這個工具Faker

在測試過程中&#xff0c;大家應該都遇到過各種各樣的數據構造問題。e.g. 構造一批通訊錄、構造一批用戶三要素(姓名手機號身份證)、構造一批銀行卡數據…… 這時候&#xff0c;測試數據大多數可能是這樣的: 張三, 130 0000 0001 李四, 130 0000 0002 王五, 130 0000 0003 …

【C/PTA —— 11.函數2(課外實踐)】

C/PTA —— 11.函數2&#xff08;課外實踐&#xff09; 一.函數題6-1 計算A[n]1/(1 A[n-1])6-2 遞歸實現順序輸出整數6-3 自然數的位數(遞歸版)6-4 分治法求解金塊問題6-5 漢諾塔6-6 重復顯示字符(遞歸版)6-7 顯示平行四邊形(右)(遞歸版) 二.編程題7-2 N階樓梯上樓問題 一.函數…

python實現存款日利息計算器(窗口界面形式)

輸入存款金額&#xff0c;7日年化收益率&#xff0c;輸出每日利息 完整源碼如下&#xff1a; import tkinter as tk from tkinter import messageboxdef calculate_interest():deposit float(entry_deposit.get())interest_rate float(entry_interest_rate.get())daily_int…

【數據結構】二叉排序樹(c風格、結合c++引用)

目錄 1 基本概念 結構體定義 各種接口 2 二叉排序樹的構建和中序遍歷 遞歸版單次插入 非遞歸版單次插入 3 二叉排序樹的查找 非遞歸版本 遞歸版本 4 二叉排序樹的刪除&#xff08;難點&#xff09; 1 基本概念 普通二叉排序樹是一種簡單的數據結構&#xff0c;節點的值…

戲說二十三種設計模式_用故事的方式就是讓你一定能懂

創建型模式 1、FACTORY—追MM少不了請吃飯了&#xff0c;麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西&#xff0c;雖然口味有所不同&#xff0c;但不管你帶MM去麥當勞或肯德基&#xff0c;只管向服務員說“來四個雞翅”就行了。麥當勞和肯德基就是生產雞翅的Factory 工廠模式&…

Cortex-M與RISC-V區別

環境 Cortex-M以STM32H750為代表&#xff0c;RISC-V以芯來為代表 RTOS版本為RT-Thread 4.1.1 寄存器 RISC-V 常用匯編 RISC-V 關于STORE x4, 4(sp)這種寄存器前面帶數字的寫法&#xff0c;其意思為將x4的值存入sp4這個地址&#xff0c;即前面的數字表示偏移的意思 反之LOA…

【LM358AD運放方波振蕩器可控輸出幅值】2022-2-25

緣由仿真如何縮小方波振蕩電路方波幅值?-有問必答-CSDN問答

使用Pytorch從零開始構建LSTM

長短期記憶&#xff08;LSTM&#xff09;網絡已被廣泛用于解決各種順序任務。讓我們了解這些網絡如何工作以及如何實施它們。 就像我們一樣&#xff0c;循環神經網絡&#xff08;RNN&#xff09;也可能很健忘。這種與短期記憶的斗爭導致 RNN 在大多數任務中失去有效性。不過&a…

發送一個網絡數據包的過程解析

在 ip_queue_xmit 中&#xff0c;也即 IP 層的發送函數里面&#xff0c;有三部分邏輯。第一部分&#xff0c;選取路由&#xff0c;也即我要發送這個包應該從哪個網卡出去。 這件事情主要由 ip_route_output_ports 函數完成。接下來的調用鏈為&#xff1a;ip_route_output_port…

改進YOLOv8 | YOLOv5系列:RFAConv續作,即插即用具有任意采樣形狀和任意數目參數的卷積核AKCOnv

RFAConv續作,構建具有任意采樣形狀的卷積AKConv 一、論文yolov5加入的方式論文 源代碼 一、論文 基于卷積運算的神經網絡在深度學習領域取得了顯著的成果,但標準卷積運算存在兩個固有缺陷:一方面,卷積運算被限制在一個局部窗口,不能從其他位置捕獲信息,并且其采樣形狀是…

Matlab進階繪圖第33期—雙曲面圖

在《Matlab論文插圖繪制模板第56期—曲面圖&#xff08;Surf&#xff09;》中&#xff0c;我分享過曲面圖的繪制模板。 然而&#xff0c;有的時候&#xff0c;需要在一張圖上繪制兩個及以上的曲面圖&#xff0c;且每個曲面圖使用不同的配色方案。 在Matlab中&#xff0c;一張…

C++基礎入門(超詳細)

話不多說&#xff0c;序言搞起來&#xff1a; 自從開始學老師布置的任務后&#xff0c;目前還是OpenCV&#xff0c;哈~哈。我就莫名問老師&#xff1a;“以后編程是用C還是python&#xff1f;”&#xff0c;果然還是太年輕&#xff0c;老師說&#xff1a;“兩們都要精通”。唉&…