找朋友

标题:找朋友 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
在学校中,N个小朋友站成一队, 第i个小朋友的身高为height[i],
第i个小朋友可以看到的第一个比自己身高更高的小朋友j,那么j是i的好朋友(要求j > i)。
请重新生成一个列表,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,请在该位置用0代替。
小朋友人数范围是 [0, 40000]。




import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());
        String stu = scanner.nextLine();
        String[] stus =stu.split("\\s+");

        List<Integer> list = new ArrayList<>();
        for (int i =0;i<num;i++){
            int iHeight = Integer.parseInt(stus[i]);
            int index=0;
            for (int j =i;j<num;j++){
                int jHeight = Integer.parseInt(stus[j]);
                if (jHeight>iHeight){
                    index=j;
                    break;
                }
            }
            list.add(index);
        }
        StringBuilder sb =new StringBuilder();
        for (int nnn:list){
            sb.append(nnn).append(" ");
        }
        sb.setLength(sb.length()-1);
        System.out.println(sb.toString());
    }
}

n = int(input())
a = list(map(int,input().split()))
q = []
ans =[0]*n
for i in range(n-1,-1,-1):
    while q and a[q[-1]] <= a[i]:
        q.pop()
    if q:
        ans[i] = q[-1]
    q.append(i)
print(*ans) // 95fen




全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务