华为校园招聘2016上机笔试题1

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

输入描述:

输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

输出描述:

对于每一次询问操作,在一行里面输出最高成绩.
示例1

输入

5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5

输出

5
6
5
9

 1 import java.util.Scanner;
 2 public class Main{
 3 public static void main(String[] args){
 4         Scanner scaner = new Scanner(System.in);
 5         while(scaner.hasNext()){
 6             String firsLine = scaner.nextLine();
 7             String[] lineStr = firsLine.split(" ");
 8             int N = Integer.parseInt(lineStr[0]);
 9             int M = Integer.parseInt(lineStr[1]);
10  
11             String secondLine = scaner.nextLine();
12             String[] numStrs = secondLine.split(" ");
13             int[] scores = new int[N+1];
14             for(int i = 1;i < N+1;i++){
15                 scores[i] = Integer.parseInt(numStrs[i-1]);
16             }
17             for(int i = 0;i < M;i++){
18                 String line = scaner.nextLine().trim();
19                 String[] strs = line.split(" ");
20                 int A = Integer.parseInt(strs[1]);
21                 int B = Integer.parseInt(strs[2]);
22                 if(strs[0].equals("Q")){
23                     System.out.println(getMax(scores,A,B));
24                 }else if(strs[0].equals("U")){
25                     update(scores,A,B);
26                 }
27             }
28         }
29  
30     }
31  
32     private  static int getMax(int[] scores,int from,int to){
33          if (from > to){
34             int temp = from;
35             from = to;
36             to = temp;
37         }
38         int max = scores[from];
39         for(int i = from+1;i <= to;i++){
40             if(scores[i] > max){
41                 max = scores[i];
42             }
43         }
44         return max;
45     }
46  
47     private static void update(int[] scores,int id,int newScore){
48         scores[id] = newScore;
49     }
50  }

 

posted @ 2020-03-26 22:05  Daemon12  阅读(301)  评论(0)    收藏  举报