1. 程式人生 > >演算法之刪除排序陣列中的重複項

演算法之刪除排序陣列中的重複項

題目:給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。

解答:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
         int i=1;//計數器
         for(int j=1;nums[j] < nums.size();j++) //大迴圈
         {
            if(nums[j]!=nums[j-1])
            {
                nums[i]=nums[j];
                i++;
            }            
         }
        
        nums.erase(nums.begin()+i,nums.begin()+nums.size());
        
        return nums.size();
      
    }
};

vs上實現:

// practice.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
#include "pch.h"
#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
	int n;  //陣列長度
	cin >> n;
	vector<int> nums(n);
	int i = 1;//計數器
	for (int l = 0; l < n; l++)
		cin >> nums[l];
	for (int j = 1; j < n; j++) //大迴圈
	{		
		if (nums[j] != nums[j - 1])
		{
			nums[i] = nums[j];
			i++;
		}
	}
	nums.erase(nums.begin() + i, nums.begin() + nums.size());
	for(int k=0;k<i;k++)
		cout << nums[k]<<endl;
	cout << "個數:" <<i<< endl;
}

注意點: 1、長度函式

  • length()函式 c++中,length()只是用來獲取字串的長度。 例如:string str = “asdfghjkl” ,則,str.length() = 9。
  • size()函式 c++中,在獲取字串長度時,size()函式與length()函式作用相同。 size()函式還可以獲取vector型別的長度。 例如:vector < int> num(15,2) , 則,num.size() = 15。
  • sizeof()運算子 sizeof()運算子用來求物件所佔記憶體空間的大小。一般主要用在char上面!不要瞎用謝謝自己。

2.vector容器,明天整理一下這塊內容。

今天的排名是29萬。 感謝我的朋友們對我的指點。