找到好朋友-华为OD

题目描述:

在学校中,N 个小朋友站成一队,第 i 个小朋友的身高为 height[i],第 i 个小朋友可以看到第一个比自己身高更高的小朋友j,那么 j 是 i 的好朋友 (要求:j>i) 。
请重新生成一个列表,对应位置的输出是每个小朋友的好朋友的位置。
如果没有看到好朋友,请在该位置用0代替。
小朋友人数范围 0~40000。

输入描述:

第一行输入 N,N 表示有N个小朋友
第二行输入 N 个小朋友的身高 height[i],都是整数

输出描述:

输出 N 个小朋友的好朋友的位置

示例:
输入:
2
100 95
输出:
0 0

说明:

第一个小朋友身高100站在队伍末尾,向队首看,没有比他身高高的小朋友,所以输出第一个值为0,第二个小朋友站在队首前面也没有比他身高高的小朋友,所以输出第二个值为0。

输入:
8
123 124 125 121 119 122 126 123
输出:
1 2 6 5 5 6 0 0

说明:

123的好朋友是1位置上的124 ,124的好朋友是2位置上的125,125的好朋友是6位置上的126,依此类推

public static void main(String[] args) {
        int num = 8;
        int[] arr = {123, 124, 125, 121, 119, 122, 126, 123};

        List<Integer> list = new ArrayList<>();
        int[] ints = Arrays.copyOf(arr, num);
        for (int i = 0; i < arr.length; i++) {
            for (int j = i+1; j < ints.length ; j++) {
                //遍历判断前面的值是否比后面的值大
                if(arr[i]<arr[j]){
                    list.add(j);
                    break;
                }//遍历完成后,如果找不到前面的值比后面的大,则赋值为0
                if(j==ints.length-1){
                    list.add(0);
                }
            }
        }
        for (int a:list) {
            System.out.print(a+" ");
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD机试-B卷代表团坐车Java实现如下: 可以使用Java的对象和类来实现代表团坐车的功能。 首先,我们可以创建一个代表团类(DelegateGroup),用于存储代表团每个成员的姓名、目的地和乘车状态等信息。在代表团类可以定义成员变量name、destination和status等,并添加相应的getter和setter方法。 然后,我们可以创建一个乘车类(Bus),表示可以坐的公共交通工具。在乘车类可以定义一个成员变量capacity,表示公共交通工具的总容量,以及一个成员变量occupied,表示当前已经被占用的座位数量。同样,还可以添加getter和setter方法。 接下来,在主程序,我们可以实例化几个代表团对象,例如通过DelegateGroup类创建代表团成员A、B、C等,并为每个成员指定目的地和乘车状态等信息。 然后,我们可以实例化一个公共交通工具对象,例如通过Bus类创建一个公交车对象bus,并设置总容量和当前已被占用的座位数量等信息。 接着,我们可以通过循环遍历代表团成员,根据成员的乘车状态来判断是否可以为该成员分配座位。如果成员的乘车状态为“需要乘车”且公共交通工具的座位尚未全部被占用,那么可以为该成员分配一个座位,并将公共交通工具的已占用座位数量加1。如果成员的乘车状态为“不需要乘车”或公共交通工具的座位已全部占满,那么不为该成员分配座位。 最后,我们可以输出每个代表团成员的姓名、目的地和乘车状态,并输出公共交通工具的总容量和已占用座位数量等信息。 以上就是用Java实现代表团坐车功能的简单示例。还可以根据实际需求进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值