【Java】尋找陣列中“主要元素”
題目描述
陣列中佔比超過一半的元素稱為“主要元素”,也就是說,陣列某個元素出現的次數大於陣列長度的一半,該元素可稱為主要元素。給定一個整型陣列,找到它的主要元素,如果沒有則返回-1。
解決思路
雙指標法
畫圖示意一下
<span style="color:#000000"><code class="language-java"><span style="color:#6679cc">public</span> <span style="color:#6679cc">static</span> <span style="color:#6679cc">int</span> <span style="color:#3d8fd1">majorElement</span><span style="color:#999999">(</span><span style="color:#6679cc">int</span><span style="color:#999999">[</span><span style="color:#999999">]</span> arr<span style="color:#999999">)</span><span style="color:#999999">{</span>
<span style="color:#6b7394">//對於此題而言,把握好i和j的邊界非常關鍵</span>
<span style="color:#6679cc">for</span> <span style="color:#999999">(</span><span style="color:#6679cc">int</span> i <span style="color:#ac9739">=</span> <span style="color:#ac9739">0</span><span style="color:#999999">;</span> i <span style="color:#ac9739"><=</span> arr<span style="color:#999999">.</span>length<span style="color:#ac9739">/</span><span style="color:#ac9739">2</span><span style="color:#999999">;</span> i<span style="color:#ac9739">++</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#6679cc">for</span> <span style="color:#999999">(</span><span style="color:#6679cc">int</span> j <span style="color:#ac9739">=</span> arr<span style="color:#999999">.</span>length<span style="color:#ac9739">/</span><span style="color:#ac9739">2</span><span style="color:#999999">;</span> j <span style="color:#ac9739"><</span> arr<span style="color:#999999">.</span>length<span style="color:#999999">;</span> j<span style="color:#ac9739">++</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#6679cc">if</span><span style="color:#999999">(</span>arr<span style="color:#999999">[</span>i<span style="color:#999999">]</span> <span style="color:#ac9739">==</span> arr<span style="color:#999999">[</span>j<span style="color:#999999">]</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
<span style="color:#6679cc">return</span> arr<span style="color:#999999">[</span>i<span style="color:#999999">]</span><span style="color:#999999">;</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
<span style="color:#6679cc">return</span> <span style="color:#ac9739">-</span><span style="color:#ac9739">1</span><span style="color:#999999">;</span>
<span style="color:#999999">}</span>
<span style="color:#6679cc">public</span> <span style="color:#6679cc">static</span> <span style="color:#6679cc">void</span> <span style="color:#3d8fd1">main</span><span style="color:#999999">(</span>String<span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#6679cc">int</span><span style="color:#999999">[</span><span style="color:#999999">]</span> arr1 <span style="color:#ac9739">=</span> <span style="color:#999999">{</span><span style="color:#ac9739">4</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">8</span><span style="color:#999999">,</span><span style="color:#ac9739">8</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">8</span><span style="color:#999999">,</span><span style="color:#ac9739">10</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">}</span><span style="color:#999999">;</span>
System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#3d8fd1">println</span><span style="color:#999999">(</span><span style="color:#ac9739">"陣列中的主要元素為: "</span><span style="color:#ac9739">+</span><span style="color:#3d8fd1">majorElement</span><span style="color:#999999">(</span>arr1<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
執行結果如下:
相關文章
- 尋找陣列中第K大的元素陣列
- 尋找陣列的中心索引陣列索引
- 尋找兩個有序陣列的中位數陣列
- 尋找兩個正序陣列中的中位數陣列
- java陣列元素的引用Java陣列
- java陣列中重複元素的去重Java陣列
- 153. 尋找旋轉排序陣列中的最小值(中)排序陣列
- 153. 尋找旋轉排序陣列中的最小值排序陣列
- LeetCode--尋找兩個有序陣列的中位數(05)LeetCode陣列
- 4. 尋找兩個正序陣列的中位數陣列
- LeetCode第4題:尋找兩個有序陣列的中位數LeetCode陣列
- LeetCode-153-尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 【LeetCode】153. 尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 二分搜尋之搜尋陣列中目標元素的首尾下標陣列
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- 尋找陣列中和為定值的兩個數陣列
- 尋找陣列中的最大值和最小值O(1.5*N)陣列
- 尋找兩個正序陣列的中位數問題,方法一:合併陣列檢索法陣列
- Java中查詢陣列多數元素的4種方法Java陣列
- 【Java】陣列二分查詢元素Java陣列
- java陣列如何遍歷全部的元素Java陣列
- 陣列中每個陣列元素出現的次數陣列
- [LeetCode 刷題] 4. 尋找兩個有序陣列的中位數 (Hard)LeetCode陣列
- 【LeetCode Hot 100】4. 尋找兩個正序陣列的中位數LeetCode陣列
- GO實現:leetcode之尋找兩個正序陣列的中位數GoLeetCode陣列
- 旋轉陣列中的最小元素陣列
- 陣列元素逆序陣列
- LeetCodeHot100 二分查詢 35. 搜尋插入位置 74. 搜尋二維矩陣 34. 在排序陣列中查詢元素的第一個和最後一個位置 33. 搜尋旋轉排序陣列 153. 尋找旋轉排序陣列中的最小值LeetCode矩陣排序陣列
- LeetCode解題(C++)-4. 尋找兩個有序陣列的中位數LeetCodeC++陣列
- lgP5788 陣列中尋找右側第一個大於它的數陣列
- 力扣演算法題:尋找兩個正序陣列的中位數力扣演算法陣列
- Java擷取指定區間內的陣列元素並存入新陣列Java陣列
- Java中的陣列Java陣列
- 找到兩個陣列中的公共元素陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- 找一個陣列中特別的數陣列
- js 從目標陣列中過濾掉 一個陣列元素,JS陣列
- 陣列元素劃分陣列