如何在Java中找到一个数组中的所有领导

如何在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: (Brute Force Approach)

  • 第1步 – 声明并初始化一个整数数组。

  • 第2步–初始化两个for循环,一个在另一个里面。

  • 第3步 – 从外层for循环的第一个元素中抽取一个元素。

  • 第4步 – 通过使用内部for循环将该元素与它的下一个元素进行比较。

  • 第5步 – 如果外部for循环的元素仍然大于直到数组的最后一个元素,那么打印该元素。

  • 第6步–最后,你会在控制台中得到所有领导人的打印。

算法-2: (Optimized Approach)

  • 第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来寻找数组中的领导。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程