程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [leetcode] 80 Remove Duplicates from Sorted Array II(數組下標操作)

[leetcode] 80 Remove Duplicates from Sorted Array II(數組下標操作)

編輯:C++入門知識

[leetcode] 80 Remove Duplicates from Sorted Array II(數組下標操作)


因為這道題目的題意是要求我們在原數組上進行操作,所以操作變得稍微復雜了些,否則直接使用map最為簡單。

基本思想是記錄兩個指針,一個是當前數組,另一個是目的數組,注意如果發現重復數超過2,那麼目的數組的cur就要阻塞,

直到不同的出現後再賦值前進。

 

class Solution {
public:
    int removeDuplicates(vector& nums) {
    	if(nums.size()==0)
    	return 0;
    	int cur=1;  //修改後數組的下標點 
    	int sum=0,temp;
      for(int i=1;i

還有一種是網上的解法,一開始沒想通,後來發現忘看了條件--->數組已經排好序了,所以僅判斷nums[i]和nums[i-2]是可行的。

 

 

如果i掃到的當前元素在index之前已經存在兩個(注意,由於A是排好序的,因此只需要判斷前兩個就行),那麼i繼續前進。否則將i指向的元素加入index,index與i一起前進。

 

class Solution {
public:
    int removeDuplicates(int A[], int n) {
        if(n < 3)
            return n;
        int index = 2;
        for(int i = 2; i < n; i ++)
        {
            if(A[i] != A[index-2])
                A[index ++] = A[i];
        }
        return index;
    }
};


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved