【leetcode刷題】20T16-移除元素
- 2020 年 2 月 16 日
- 筆記
木又同學2020年第16篇解題報告
leetcode第27題:移除元素
https://leetcode-cn.com/problems/remove-element/
【題目】
給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
示例 1: 給定 nums = [3,2,2,3], val = 3, 函數應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。 你不需要考慮數組中超出新長度後面的元素。
【思路】
本題較為簡單,使用count存儲結果,當元素nums[i]不等於val時,複製nums[i]到nums[count],同時count自增。
【程式碼】
python版本
class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ count = 0 for i in range(len(nums)): if nums[i] != val: nums[count] = nums[i] count += 1 return count
C++版本
class Solution { public: int removeElement(vector<int>& nums, int val) { int count = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != val) { nums[count] = nums[i]; count++; } } return count; } };