为了账号安全,请及时绑定邮箱和手机立即绑定

在数组中查找领导者

在数组中查找领导者

牧羊人nacy 2023-03-02 16:05:46
编写一个程序来打印数组中的所有领导者。如果一个元素大于其右侧的所有元素,则该元素是领导者。最右边的元素始终是领导者。例如 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
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

Intead 在循环中打印那些,将它们添加到列表中,然后单独打印它们。以下是您的代码中的更改。


class LeadersInArray {

    List<Integer> printLeaders(int[] arr, int size) {

        List<Integer> list = new ArrayList<>();


        int max_from_right = arr[size - 1];


        list.add(max_from_right);



        for (int i = size - 1; i >= 0; i--) {

            if (max_from_right < arr[i]) {

                max_from_right = arr[i];

                list.add(max_from_right);

            }

        }

        return list;

    }


    public static void main(String[] args) {

        LeadersInArray lead = new LeadersInArray();

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

        List<Integer> integers = lead.printLeaders(arr, arr.length);

        for(int i = integers.size()-1; i>=0 ;i--){

            System.out.println(integers.get(i));

        }


    }


查看完整回答
反对 回复 2023-03-02
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号