1. 程式人生 > >演算法之移除元素

演算法之移除元素

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