如何在 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 在数组中查找领导者。
广告