中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

汾西县| 雅江县| 措美县| 罗平县| 赤城县| 淄博市| 遵义县| 日土县| 方城县| 固始县| 鄂托克前旗| 吉木乃县| 湟中县| 渭南市| 恩平市| 嘉荫县| 松潘县| 论坛| 太仓市| 红安县| 新龙县| 墨江| 怀集县| 清涧县| 咸宁市| 屏南县| 县级市| 平邑县| 乐山市| 东兰县| 姚安县| 镇坪县| 沙湾县| 宝清县| 镇江市| 博客| 大理市| 哈尔滨市| 周宁县| 盈江县| 五原县|