數組中有一個數字出現的次數超過了數組長度的一半,找出這個數 這個算法的時間復雜度是O(n),另外用了兩個輔助變量。 k用於臨時存儲數組中的數據,j用於存儲某個數出現的次數。 開始時k存儲數組中的第一個數,j為0,如果數組出現的數於k相等,則j加1,否則就減1,如果j為0,就把當前數組中的數賦給k ...
題目:在一個整型數組中有一個元素的出現次數超過了數組長度的一半,試設計一個 在時間上盡可能高效的算法,找出這個元素。要求: 給出算法的基本設計思想。 根據設計思想,采用C或C 或Java語言描述算法,關鍵之處給出注釋。 說明你所設計算法的時間復雜度和空間復雜度。 算法實現: 時間復雜度為O n 。空間復雜度O 。 另解 本題最直接的方法就是對每個數字進行排序。然后輸出出現次數最大的數字即可,但排序 ...
2014-10-28 16:19 0 2354 推薦指數:
數組中有一個數字出現的次數超過了數組長度的一半,找出這個數 這個算法的時間復雜度是O(n),另外用了兩個輔助變量。 k用於臨時存儲數組中的數據,j用於存儲某個數出現的次數。 開始時k存儲數組中的第一個數,j為0,如果數組出現的數於k相等,則j加1,否則就減1,如果j為0,就把當前數組中的數賦給k ...
題目:數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。 比如輸入一個長度為9的數組{1,2。3。2,2。2。5,4。2}, 因為數組中數字2出現了5次,超過數組的長度的一半,因此輸出2 一種辦法是先把數組排序。那么超過一半的元素一定是數組最中間的元素 ...
參考地址:http://www.cnblogs.com/DayByDay/p/3871834.html?utm_source=tuicool&utm_medium=referral 題目:找出數組中出現次數超過一半的元素(前提是該元素一定存在) 解法1:每次刪除數組中兩個不同的元素 ...
1152: 零起點學算法59——找出一個數組中出現次數最多的那個元素 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 990 Accepted: 532[Submit][Status ...
重點有三個:1,通過嵌套for循環,把數組的每一項,跟整個數組中的所有項,比較一遍;2,通過if判斷,如果有相等的項,count++,並把相等的項置為-1,這樣可以判斷等於-1的就是重復的,就不再加入新數組了;3,用if判斷!=-1,決定是否加入新數組中,返回。 ...
程序員=編程語言基礎+數據結構+算法 這幾天繼續回歸java基礎,以及學習數據結構的知識,這里實現一個簡單的算法----找出數組中一個數字出現次數最多的數字的算法 打印結果如下: 出現次數最多的數字為:2 該數字一共出現6次 ...