在数组中查找领导者

编写一个程序来打印数组中的所有领导者。如果一个元素大于其右侧的所有元素,则该元素是领导者。最右边的元素始终是领导者。例如 int 数组 {16, 17, 4, 3, 5, 2},前导为 17、5 和 2。让输入数组为 arr[],数组的大小为 size。


o/p 我得到的是 2 5 17


注意:我想要 o/p 相反的顺序,还有一个在另一个下面(换行符)。


class LeadersInArray  

    /* Java Function to print leaders in an array */

    void printLeaders(int arr[], int size) 

    { 

        int max_from_right =  arr[size-1]; 


        /* Rightmost element is always leader */

        System.out.print(max_from_right + " "); 


        for (int i = size-2; i >= 0; i--) 

        { 

            if (max_from_right < arr[i]) 

            {            

            max_from_right = arr[i]; 

            System.out.print(max_from_right + " "); 

            } 

        }     

    } 


    public static void main(String[] args)  

    { 

        LeadersInArray lead = new LeadersInArray(); 

        int arr[] = new int[]{16, 17, 4, 3, 5, 2}; 

        int n = arr.length; 

        lead.printLeaders(arr, n); 

    } 

预期输出:


   17

   5

   2


牧羊人nacy
浏览 137回答 1
1回答

米琪卡哇伊

Intead 在循环中打印那些,将它们添加到列表中,然后单独打印它们。以下是您的代码中的更改。class LeadersInArray {&nbsp; &nbsp; List<Integer> printLeaders(int[] arr, int size) {&nbsp; &nbsp; &nbsp; &nbsp; List<Integer> list = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; int max_from_right = arr[size - 1];&nbsp; &nbsp; &nbsp; &nbsp; list.add(max_from_right);&nbsp; &nbsp; &nbsp; &nbsp; for (int i = size - 1; i >= 0; i--) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (max_from_right < arr[i]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; max_from_right = arr[i];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list.add(max_from_right);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return list;&nbsp; &nbsp; }&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; LeadersInArray lead = new LeadersInArray();&nbsp; &nbsp; &nbsp; &nbsp; int arr[] = new int[]{16, 17, 4, 3, 5, 2};&nbsp; &nbsp; &nbsp; &nbsp; List<Integer> integers = lead.printLeaders(arr, arr.length);&nbsp; &nbsp; &nbsp; &nbsp; for(int i = integers.size()-1; i>=0 ;i--){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(integers.get(i));&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java