[編程題] 找出前邊比自己高的人的身高--字節筆試題


找出前邊比自己高的人的身高--字節筆試題

題目描述

存在一個多組的輸入,第一行輸入是有N個同學,接下來的一行分別是N個同學的身高。某同學X前的第一個比他高的同學,記錄下其身高值。返回是一行每個同學對應找到的其前邊的第一個比自己高的身高值。

示例

例如1:

輸入:

5

1 2 3 4 5

輸出: -1 -1 -1 -1 -1

例如2:

輸入:

5

5 4 3 2 1

輸出:

-1 5 4 3 2

Java代碼

package ncompanydemos.p2_bytedance;

import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * @author jiyongjia
 * @create 2020/7/11 - 20:28
 * @descp:  本地idea中是ctrl+d來停止scanner的輸入無法停止的問題
 */

public class Exam03{
    //輸入輸出問題
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        ArrayList<Deque<Integer>> lis = new ArrayList<>();
        while(in.hasNext()){
            int n = in.nextInt();
            int[] arr = new int[n];
            for(int i=0;i<n;i++){
                arr[i] = in.nextInt();
            }
            //調用方法
            Deque<Integer> stack = solve(n,arr);
            lis.add(stack);
        }

        //遍歷出結果集
        for(Deque<Integer> d : lis){
            while(!d.isEmpty()){
                System.out.print(d.pop()+" ");
            }
            System.out.println();
        }
    }

    //處理算法
    public static Deque<Integer> solve(int n,int[] arr){
        Deque<Integer> stack = new LinkedList<Integer>();
        if(n==1) {
            stack.push(-1);
            return stack;
        }

        for(int i=arr.length-1;i>=1;i--){
            boolean flag = false;
            for(int j=i-1;j>=0;j--){
                if(arr[j]>arr[i]){
                    stack.push(arr[j]);
                    flag = true;//代表存入了值
                    break;
                }
            }
            //如果內層for一直沒有比當前大的值,就存-1進去
            if(!flag){
                stack.push(-1);
            }
        }
        //最外層循環是處理到i=1結束的,最前邊的那個值始終放-1;
        stack.push(-1);
        return stack;
    }
}

輸出

image-20200711205247204

在線編程時候還是沒通過,只通過自測用例,估計程序時間復雜度問題吧!要么就是磨人的輸入輸出有問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM