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在数组中找到领导者。