去除整型陣列中的重複數字

2021-07-14 02:32:34 字數 652 閱讀 6155

題目:如何把乙個整型陣列中重複的數字去掉。

分析:首先通過快速排序對陣列進行排序,然後對排好序的陣列經過一次遍歷,將其重複元素通過交換,最終達到刪除重複元素的目的。總的時間複雜度為 o(nlogn),空間複雜度為o(1)。下面借助c語言類庫中自帶的快速排序演算法qsort,來實現排序。

具體實現如下:

#include 

int comp(const

void *a, const

void *b)

int unique(int arr, int len)

}return (k + 1); // 去重後,陣列的長度

}int main(int argc, const

char * argv) ;

int len = sizeof(arr)/sizeof(int);

int newlen = unique(arr, len);

for (int i = 0; i < newlen; i++)

printf("%d ", arr[i]);

printf("\n");

return

0;}

備註:sort( )和qsort( )的知識點可參考 c++ 排序函式 sort(),qsort()的用法。

陣列中重複數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中第乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。返回描述 如果陣列中有重複的數字,函式返回true,否則返回...

陣列中的重複數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1 排序 將陣列排序,然後掃瞄排序後的陣列即可。時間複雜度 o nl...

陣列中的重複數字

題目 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出的重複的數字2或者3。分析 陣列中的數字都在0 n 1之間,如果沒有該陣列中沒有重複的數...