如何在 Java 中查詢陣列中的所有領導者?


在 Java 中,陣列是一個物件。它是一種非原始資料型別,用於儲存相同資料型別的值。

根據問題陳述,我們必須在陣列中找到領導者。如果一個元素大於其右側的所有元素,則該元素為領導者。

讓我們開始吧!

向您展示一些例項

例項 1

Suppose the original array is {16, 17, 4, 3, 11, 14, 23, 2, 6, 10}.

在找到陣列中的領導者後,結果將為 - 23 10

例項 2

Suppose the original array is {16, 17, 4, 3, 5, 6, 9, 1, 8, 2}.

在找到陣列中的領導者後,結果將為 - 17 9 8 2

例項 3

Suppose the original array is {1, 5, 7, 3, 2, 1}

在找到陣列中的領導者後,結果將為 - 7 1

演算法 1:(蠻力法)

  • 步驟 1 - 宣告並初始化一個整數陣列。

  • 步驟 2 - 初始化兩個 for 迴圈,一個巢狀在另一個裡面。

  • 步驟 3 - 從外部 for 迴圈的第一個元素中獲取一個元素。

  • 步驟 4 - 使用內部 for 迴圈將該元素與其後續元素進行比較。

  • 步驟 5 - 如果外部 for 迴圈元素一直大於陣列的最後一個元素,則列印該元素。

  • 步驟 6 - 最終,您將在控制檯列印所有領導者。

演算法 2:(最佳化方法)

  • 步驟 1 - 宣告並初始化一個整數陣列。

  • 步驟 2 - 使用 for 迴圈從最右邊的元素開始迭代陣列並跟蹤最大值。

  • 步驟 3 - 任何時候您獲得任何新的最大元素,則前一個最大元素都是領導者。

  • 步驟 4 - 最終,您將在控制檯列印所有領導者。

多種方法

我們已經透過不同的方法提供瞭解決方案。

  • 使用蠻力法(從左到右元素掃描)

  • 使用帶使用者定義方法的蠻力法

  • 使用最佳化方法(從右到左元素掃描)

讓我們逐一檢視程式及其輸出。

方法 1:使用蠻力法

示例

我們將使用演算法 1 解決此程式。

public class Main{
   public static void main(String[] args){
   
      //Declare and initialize the array elements
      int array[] = {16, 17, 4, 3, 5, 6, 9, 1, 8, 2};
      int size = array.length;
      System.out.println("Leaders in the array are: ");

      //Logic Implementtaion
      for (int i = 0; i < size; i++){
         int j;
         for (j = i + 1; j < size; j++){
            if (array[i] <=array[j])
               break;
         }
         if (j == size) // the loop didn't break{
         
            //print the result
            System.out.print(array[i] + " ");
         }
      }
   }

輸出

Leaders in the array are: 
17 9 8 2

方法 2:使用帶使用者定義方法的蠻力法

示例

我們將使用演算法 1 解決此程式,但這裡我們將使用使用者定義的方法。

public class Main{
   public static void main(String[] args){
   
      //Declare and initialize the array elements
      int array[] = {16, 17, 4, 3, 5, 6, 9, 1, 8, 2};
      int m = array.length;
      System.out.println("Leaders in the array are: ");
      
      //call a user defined method
      findLeaders(array, m);
   }
   
   //main method
   static void findLeaders(int array[], int size){
   
      //Logic Implementtaion
      for (int i = 0; i < size; i++){
         int j;
         for (j = i + 1; j < size; j++){
            if (array[i] <=array[j])
               break;
         }
         if (j == size) // the loop didn't break{
         
            //print the result
            System.out.print(array[i] + " ");
         }
      }
   }

輸出

Leaders in the array are: 
17 9 8 2

方法 3:使用最佳化方法

示例

我們將使用演算法 2 解決此程式

public class Main{
   public static void main(String[] args){
   
      //Declare and initialize the array elements
      int array[] = {16, 17, 4, 3, 5, 6, 9, 1, 8, 2};
      int m = array.length;
      System.out.println("Leaders in the array are: ");
      
      //call a user defined method
      findLeaders(array, m);
   }
   
   //main method
   static void findLeaders(int arr[], int size){
   
      //Logic Implementtaion
      int rightMaximum=arr[arr.length-1];
      
      //Here we have started loop from size-2 
      
      //as rightmost element is always a leader
      System.out.print(rightMaximum+" ");
      for (int i = size-2; i>=0; i--) {
         if(arr[i] > rightMaximum){
            rightMaximum=arr[i];
            System.out.print(rightMaximum+" ");
         }
      }
   }
}

輸出

Leaders in the array are: 
2 8 9 17

在本文中,我們探討了如何使用 Java 在陣列中查詢領導者。

更新於:2023 年 1 月 11 日

3K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.