91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么找到數組中的多數元素

發布時間:2021-12-27 16:48:00 來源:億速云 閱讀:161 作者:iii 欄目:大數據

這篇文章主要介紹“java怎么找到數組中的多數元素”,在日常操作中,相信很多人在java怎么找到數組中的多數元素問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java怎么找到數組中的多數元素”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

問題:給定一個大小為 n 的數組,找到其中的多數元素。多數元素是指在數組中出現次數大于 ? n/2 ? 的元素。你可以假設數組是非空的,并且給定的數組總是存在多數元素。比如:數組 [3,2,3] 的多數元素是 3 ,數組 [2,2,1,1,1,2,2] 的多數元素是 2 。

既然多數元素在數組中出現的次數大于 ? n/2 ? ,給這個數組排個序,然后取中間的值,得到的肯定就是多數元素,要不然不符合題意。

這樣的話,兩行代碼就可以搞定:

java Arrays.sort(nums); return nums[nums.length >> 1];

但是時間復雜度是 O(nlogn) ,空間復雜度是 O(logn) 。

咱們平時都是怎么投票的呢?大家每個人都選一個人寫在紙條上,然后開始拆開紙團瞅瞅選的是誰。剛開始默認大家都是 0 票,然后紙條上投的是誰,這個人就多一票,最后看誰的票數比較多。回到咱們這個題目,既然是眾數,而且出現的次數大于 ? n/2 ? ,那我們可以假設一個數就是要求的眾數,同時設置這個數字出現的次數為 0 ,然后和接下來的數字進行比較。如果一樣呢,咱們把這個數字出現的次數加上 1 ,如果不一樣,就讓次數減 1 ,當這個值減到 0 時,說明剛開始假設的數字不是眾數,那就換當前的這個數字,繼續循環。這樣最后這個數字出現的次數一定是大于等于 0 的,要不然就不符合 出現的次數大于 ? n/2 ? 這個題意了,最后的最后,將真正的眾數返回即可。

java // 設置初始票數為 0 int count = 0 ; // 先將要求的眾數定義為空 Integer majorityElement = null; // 循環數組 for(int num : nums){ // 當 count 為 0 時,假設當前的數為要求的眾數 if (count == 0){ majorityElement = num; } // 當 num 等于假設的眾數時, count 就加 1 count += ( num == majorityElement ) ? 1 : -1 ; } // 最后返回真正的眾數 return majorityElement;

到此,關于“java怎么找到數組中的多數元素”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达尔| 彰化县| 文成县| 峨眉山市| 湟源县| 隆回县| 明溪县| 南城县| 通州市| 西平县| 安泽县| 汨罗市| 香河县| 绥宁县| 丹巴县| 景宁| 阜新市| 衡阳市| 平武县| 鄂温| 莎车县| 满城县| 敖汉旗| 扎兰屯市| 曲阳县| 华蓥市| 中牟县| 临泉县| 和龙市| 元朗区| 北碚区| 冀州市| 遵义市| 明水县| 毕节市| 河南省| 石河子市| 剑阁县| 高陵县| 瑞昌市| 峨山|