20 4 11 移動零 簡單

2022-02-10 20:19:13 字數 916 閱讀 6270

時間複雜度o(n),空間複雜度o(1)

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

示例:

輸入: [0,1,0,3,12]

輸出: [1,3,12,0,0]

說明:

必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

從前往後遍歷,遍歷時不斷更新零的數量,每個數都根據零的數量往前移動相應位置;

這樣操作會把所有0都覆蓋掉,在末尾更改相應數量的0。比如零的數量為2,[nums.size()-record, nums.size()]都要改為0。

排除特殊情況;

變數record記錄零的數量;

迴圈中,i的邊界條件會跟著零的數量進行變化,不然會越界;

覆蓋的時候要考慮用來覆蓋的這個數是不是0,通過while的條件判斷。如果是0,則要繼續往後找不是0的數,並更新零的數量;

while中i+record要小於 nums.size()-1,如果小於nums.size(),下一條語句會越界;

同時!nums[i+record]很巧妙的解決了第一次和第二次遇到零要不同處理的問題;

第二個for迴圈,末尾改零。

class solution 

for(int i = nums.size() - record; i < nums.size(); i++)

if(nums[i] != 0)

nums[i] = 0;}};

20 4 11 缺失數字 簡單

時間複雜度o nlogn 空間複雜度o 1 給定乙個包含 0,1,2,n 中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2 示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8 說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來...

20 4 11 驗證回文串 簡單

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 先整理好字串,字串改為只有小寫字...

LeetCode283 移動零(簡單)

原題目給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目大意 將陣列所有的零移至末尾,且不改變其他數字的順序,且只能開闢常數級...