【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;      }  };