題目描述 思路
快慢指標(i 是慢指標,j 是快指標)
nums[j] = val 時,跳過
nums[j] != val 時,nums[i] = nums[j],並且 i++
直至 j 遍歷結束,返回 i 的值
時間複雜度 o(n) : i 和 j 至少遍歷 2n 步
空間複雜度 o(1) : 沒有使用額外的陣列空間
實現
/**
* author: lisiyu
* created: 2020/1/19
*/public
class
removeelement27
}return i;
}}
思路2
為了減少不必要的複製,可以在 nums[i] == val 時,將 nums[i] 與最後乙個元素交換,並刪除最後乙個元素,此時陣列長度減小1。
當 nums[i] != val 時,繼續遍歷。
時間複雜度o(n)
空間複雜度o(1)
實現
/**
* author: lisiyu
* created: 2020/1/19
*/public
intremoveelement2
(int
nums,
int val)
else
}return n;
}
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...