如何在 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 在陣列中查詢領導者。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP