題目:如何把乙個整型陣列中重複的數字去掉。
分析:首先通過快速排序對陣列進行排序,然後對排好序的陣列經過一次遍歷,將其重複元素通過交換,最終達到刪除重複元素的目的。總的時間複雜度為 o(nlogn),空間複雜度為o(1)。下面借助c語言類庫中自帶的快速排序演算法qsort,來實現排序。
具體實現如下:
備註:sort( )和qsort( )的知識點可參考 c++ 排序函式 sort(),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;}
陣列中重複數字
題目描述 在乙個長度為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之間,如果沒有該陣列中沒有重複的數...