【Java】尋找陣列中“主要元素”

許昌彭于晏的部落格發表於2020-12-21

尋找陣列中主要元素

 

題目描述

陣列中佔比超過一半的元素稱為“主要元素”,也就是說,陣列某個元素出現的次數大於陣列長度的一半,該元素可稱為主要元素。給定一個整型陣列,找到它的主要元素,如果沒有則返回-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

執行結果如下:
在這裡插入圖片描述

相關文章