題目描述:
給定一個數組 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萬吧。
週末愉快。