leetcode 27 移除元素

2021-10-01 12:18:32 字數 1387 閱讀 8223

給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。

主要思路:定義乙個變數,對不重複的值計數。for迴圈完成。

存在的問題 就是值可以計算出當前不相同值,陣列的值是不符合要求的。

這種思路在移除元素較多時更適合使用,最極端的情況是全部元素都需要移除,遍歷一遍結束即可

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

public

static

intremoveelement3

(int

nums,

int val)

}return count;

}

主要思路:用乙個變數去記錄陣列的長度,然後處理兩種情況,一種是當前的值等於val 就將陣列中最後的值賦值給當前相同的值,m 用來不斷減少陣列的長度。否則的話 是另一種情況 如果不相等 直接i++ 判斷下乙個就可以。

這種思路在移除元素較少時更適合使用,最極端的情況是沒有元素需要移除,遍歷一遍結束即可

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

public

static

intremoveelement4

(int

nums,

int val)

else

}return m;

}

實現思路:乙個快指標 乙個慢指標。用快指標來判斷是否相等 不相等賦值給慢指標,慢指標的作用是來定位前面如果有重複的直接跳過去。

時間複雜度:o(n)

空間複雜度:o(1)

public

static

intremoveelement5

(int

nums,

int val)

//如果相等 不做 等待下標i來進行覆蓋

}return i;

}

實現思路:通過快慢指標 在一種比較極端的情況下。nums[1,2,3,5,4] val = 4 在最後才可以找到需要刪除的元素,雖然nums中的值沒有改變,但是通過m-- 停止了迴圈 i=4。

當我們遇到 nums[i] = valnums[i]=val 時,我們可以將當前元素與最後乙個元素進行交換,並釋放最後乙個元素。這實際上使陣列的大小減少了 1。

時間複雜度:o(n)

空間複雜度:o(1)

public

static

intremoveelement6

(int

nums,

int val)

else

}return i++

;}

LeetCode 27 移除元素

27 移除元素 給定乙個陣列和乙個值,在這個陣列中原地 移除指定值和返回移除後新的陣列長度。不要為其他陣列分配額外空間,你必須使用 o 1 的額外記憶體原地 修改這個輸入陣列。元素的順序可以改變。超過返回的新的陣列長度以外的資料無論是什麼都沒關係。示例 給定 nums 3,2,2,3 val 3,你...

LeetCode 27 移除元素

給定乙個陣列 nums 和乙個值 val,你需要原地 移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3...

leetcode27移除元素

給定乙個陣列 nums 和乙個值 val,你需要原地 移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3...