演算法之移除元素
阿新 • • 發佈:2018-12-19
題目描述: 給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。
class Solution { public: int removeElement(vector<int>& nums, int val) { int len=0; //用於計算 for(int i=0;i<nums.size();i++) { if(nums[i]!=val) { nums[len] = nums[i]; len++; } } return len; } };
vs上實現:
// test1.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。 #include "pch.h" #include <iostream> #include <vector> using namespace std; int removeElement(vector<int>& nums, int val) { int len = 0; //用於計算 for (int i = 0; i < nums.size(); i++) { if (nums[i] != val) { nums[len] = nums[i]; len++; } } return len; } int main() { int b[] = { 2,1,1,2 }; vector<int> tmp; tmp.assign(b, b + 4); cout << removeElement(tmp, 2) << endl; return 0; }
總結:今天寫第一次的時候用了中文括號和nums.sizeof()的表達,然後出了未知錯誤,放到vs上除錯才發現,下次出錯希望自己可以先自己檢查程式碼而不過多依賴編譯器。
今天排名是29萬吧。 週末愉快。