題:給定乙個整數陣列arr,其中元素可能重複,要求返回去重後的陣列,且去重保持穩定,也就是把重複的第二個元素去掉而保留第乙個元素。
解:利用通排序的思想,第一次遍歷輸入陣列,確定元素大小區間[min,max],然後申請max-min+1的桶陣列bukarr,全部初始化成[min,max]區間之外的某個不會出現在輸入陣列元素區間內的數比如min-1。然後構造輸出陣列newarr,第二次遍歷輸入陣列,對元素x,其在桶陣列內的下標就是x-min,先檢查bukarr[x-min]是否已經被標記1,如果沒有被標記1過,說明當前元素x是第一次出現,那壓棧到newarr,然後標記1;如果元素x已經被標記1過,說明當前元素x不是第一次出現,跳過x。
**:
#include#includestd::vectorgetsingle(std::vectorarr)
int *tagarr=new int[max-min+1];
for(int i(0);inewarr; //大小不定,不知道重複了多少個元素
for(int &rele:arr)else if(tagarr[rele-min]==1)
continue;
}return newarr;
}int main(int argc,char *ar**);
for(int i(0);i<8;i++)arrin.push_back(arr[i]);
std::vectorarrout(getsingle(arrin));
for(int &rele:arrout)std::cout
}
LeetCode演算法題217 存在重複元素解析
給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列中出現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。示例1 輸入 1,2,3,1 輸出 true示例2 輸入 1,2,3,4 輸出 false示例3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 true這...
演算法 C 陣列去除重複元素演算法研究
可以在網上找到的 string stringarray list用於儲存從陣列裡取出來的不相同的元素 list string liststring new list string foreach string eachstring instringarray 最後從list裡取出各個字串進行操作 f...
LeetCode 第26題 陣列中重複元素
1.題目 2.題目分析與思路 3.給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不需要考慮陣列中超出新長度後面的元素。這道題總的來說非常神奇,也就是說我們不用刪除陣列,其實我們最好不要做的事情就是對正在遍歷的陣列進行或刪除,如果說是空...