C語言 數組中重復的數字解決方法:
創新互聯建站于2013年開始,是專業互聯網技術服務公司,擁有項目成都網站建設、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元臥龍做網站,已為上家服務,為臥龍各地企業和個人服務,聯系電話:13518219792題目:在一個長度為n的數組里的所有數字都在0-n-1的 范圍內。數組中某些數字是重復的,但是不知道有幾個數字重復了,也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出是重復的數字2或者3.
解法1:對于數組進行排序,之后對于已經排序的數組進行遍歷便可知道數組中重復的數字。
時間復雜度;O(nlogn);
解法2:建立一個大小為O(N)的哈希表,遍歷數組中的元素并判斷是否存在于哈希表中。若不存在于哈希表中,將這個元素加入哈希表之中并且繼續掃描,若這個元素存在于哈希表中,則:找到了數組中重復的一個數字;
時間復雜度:O(N),空間復雜度:O(N);
解法3:對于給定的數組進行重排。對于下標為i的元素:如果a[i] == i,掃描下一個元素;如果不相等將a[i]與a[a[i]]進行比較,若是相等則找到了一個重復的數字,若沒有,那么對于數字進行交換,依次進行。
int DuplicateInArray(int arr[],int size) { int i=0; while(i<size) { if(arr[i] == i) ++i; else { if(arr[i] != arr[arr[i]]) {swap(arr[i],arr[arr[i]]);} else {return arr[i];} } } return -1; }
另外有需要云服務器可以了解下創新互聯建站m.kartarina.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前題目:C語言數組中重復的數字分析及方法-創新互聯
URL地址:http://m.kartarina.com/article24/cdchce.html
成都網站建設公司_創新互聯,為您提供網站內鏈、網站設計、品牌網站設計、云服務器、關鍵詞優化、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯