1. 程式人生 > >[leetcode] 80 Remove Duplicates from Sorted Array II(陣列下標操作)

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

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

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

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

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
    	if(nums.size()==0)
    	return 0;
    	int cur=1;  //修改後陣列的下標點 
    	int sum=0,temp;
      for(int i=1;i<nums.size();i++)
      {
      	 temp=nums[i];
      	 if(nums[i]==nums[i-1])
      	 {
	         sum++;
			 if(sum<2)  
			 {
			 	nums[cur]=temp; 
			    cur++;
			 }
         }
         else
         {
         	sum=0;
         	nums[cur]=temp;
         	cur++;
         }
      }
      return cur;
    }
};

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

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

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;
    }
};


相關推薦

[leetcode] 80 Remove Duplicates from Sorted Array II(陣列操作)

因為這道題目的題意是要求我們在原陣列上進行操作,所以操作變得稍微複雜了些,否則直接使用map最為簡單。 基本思想是記錄兩個指標,一個是當前陣列,另一個是目的陣列,注意如果發現重複數超過2,那麼目的陣列的cur就要阻塞, 直到不同的出現後再賦值前進。 class Soluti

LeetCode 80. Remove Duplicates from Sorted Array II

ray pxn oci rfs remove sorted rem mar target 哨28環尤6乜xn是墳暇8http://t.docin.com/phkx158 Q0埔68阜氛勺資chttp://t.docin.com/sina_6272984987 繃梢陡紊6

[LeetCode]80. Remove Duplicates from Sorted Array II刪除數組中的重復值

return 指針 post || log sorted cat span etc 和第一題不同的地方是,容忍兩次重復 雖然題目上說只需要長度,但是否檢測的時候如果數組不跟著改變也是不行的 沒說清楚題意 自己是用雙指針做的,看了大神的答案更簡單 public int re

[leetcode] 80. Remove Duplicates from Sorted Array II (Medium)

排序陣列去重題,保留重複兩個次數以內的元素,不申請新的空間。 解法一: 因為已經排好序,所以出現重複的話只能是連續著,所以利用個變數儲存出現次數,藉此判斷。 Runtime: 20 ms, faster than 19.12% of C++ online submissions for Rem

leetcode 80. Remove Duplicates from Sorted Array II【c++for迴圈】

Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice

LeetCode 80. Remove Duplicates from Sorted Array II 解題報告

80. Remove Duplicates from Sorted Array II My Submissions Question Total Accepted: 66554 Tota

LeetCode OJ 80. Remove Duplicates from Sorted Array II

mat new pan turn beyond etc 變量賦值 mos UNC 題目 Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example,

leetcode】#陣列【Python】80. Remove Duplicates from Sorted Array II 刪除排序陣列中的重複項 II 雙指標

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

LeetCode80. Remove Duplicates from Sorted Array II (刪除排序陣列中的重複項 II)-C++實現及詳細圖解

問題描述: (1)建立一個輔助函式,找出下一個不析相等元素的選表 private: int nextIndex(const vector<int>& nums, int index){ for(int i = index ;

80. Remove Duplicates from Sorted Array II

mat pre python discus get -1 鏈接 stand java 題目: Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl

80. Remove Duplicates from Sorted Array II(python+cpp)

題目: Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most

leetcodeRemove Duplicates from Sorted Array II (允許重複一次,去掉陣列多餘數字)【面試演算法題】

題目: Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3]

LeetCode 80. 刪除排序數組中的重復項 IIRemove Duplicates from Sorted Array II

div 16px return aid clas 函數返回 == pre 拷貝 題目描述 給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素最多出現兩次,返回移除後數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間

LeetCode80. 刪除排序陣列中的重複項 IIRemove Duplicates from Sorted Array II

【 英文練習 | 中文練習 】 題目描述: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素最多出現兩次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 解題思路 : 遍歷一遍陣列,用一個下標

[Leetcode] Remove Duplicates from Sorted Array II

ref times 重復 leetcode 但是 cnblogs esc pro most Remove Duplicates from Sorted Array II 題解 題目來源:https://leetcode.com/problems/remove-duplica

LeetCode系列(五)-Remove Duplicates from Sorted Array II

turn tco duplicate 條件 i++ ica 刪除 count code   給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素最多出現兩次,返回移除後數組的新長度。   不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間

LeetCode in Python: Remove Duplicates from Sorted Array II

LeetCode in Python Remove Duplicates from Sorted Array II class Solution: def RemoveDuplicatesFromSortedArrayII(self, nums): if le

[LeetCode] Remove Duplicates from Sorted Array II 有序陣列中去除重複項之二

Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1,1,2,2,3], Your function should

[LeetCode][Java] Remove Duplicates from Sorted List II

gin -m || 代碼 number 算法分析 add dup adding 題意: Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only

Leetcode 26. Remove Duplicates from Sorted Array (easy)

num eas view easy lac tps 就是 duplicate remove Given a sorted array, remove the duplicates in-place such that each element appear only on