您好,登錄后才能下訂單哦!
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For example, Given input array nums = [1,1,2], Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.
題意:從排好序的數組里刪掉重復元素,返回新的數組長度。不能額外申請空間。
int removeDuplicates(int* nums, int numsSize) { // int cand=nums[0]; // for(int i=1;i<numsSize;i++){ // if(cand==nums[i]){ // numsSize--; // }else{ // cand=nums[i]; // } // } int index=0; int j; for(j=1;j<numsSize;j++){ if(nums[index]!=nums[j]){ nums[++index]=nums[j]; } } return index+1; }
PS:咦。。。又是一個雙指針問題。用兩個指針index和j分別指向當前元素和下一個帶比較的元素。
index初始為nums[0],這里一開始我還在想為什么不是從0開始放,其實想錯了。。。。。。。。。。。。。。。。。。慢慢悟道吧!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。