2016年华为校招机试题
2016-09-22 11:04
78 查看
//老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
//输入描述:
//
//输入包括多组测试数据。
//每组输入第一行是两个正整数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。
//
//
//
//输出描述:
//
//对于每一次询问操作,在一行里面输出最高成绩.
//
//
//输入例子:
//
//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
好久没刷题了,程序员之路漫漫,今天华为机试,求好运。
遇到的问题:主要是在判断A和B大小的问题上。当求最大值操作时,需要关注下左右边的大小。如果A>B时,需要将A,B互换。但是更新操作不需要关注A,B的大小。
//输入描述:
//
//输入包括多组测试数据。
//每组输入第一行是两个正整数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。
//
//
//
//输出描述:
//
//对于每一次询问操作,在一行里面输出最高成绩.
//
//
//输入例子:
//
//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
好久没刷题了,程序员之路漫漫,今天华为机试,求好运。
import java.util.*; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int M = in.nextInt();//学生的数目 int N = in.nextInt();//操作的数目 int[] arr = new int[M]; for(int i=0;i<M;i++){ arr[i] = in.nextInt(); } ArrayList<Integer> array = new ArrayList(); for(int j=0;j<N;j++){ String ope = in.next(); int a = in.nextInt(); int b = in.nextInt(); int res =getProcess(arr,a,b,ope); if(res!=-1){ array.add(res); } } for(int i= 0;i<array.size();i++){ System.out.println(array.get(i)); } } } public static int getProcess(int[] a, int i, int j, String s){ if(s.equals("Q")){ if(i>j){ int temp=i; i=j; j=temp; } int max=a[i-1]; for(int k=i-1;k<=j-1;k++){ if(a[k]>=max){ max = a[k]; } } return max; }else{ a[i-1]=j; return -1; } } }
遇到的问题:主要是在判断A和B大小的问题上。当求最大值操作时,需要关注下左右边的大小。如果A>B时,需要将A,B互换。但是更新操作不需要关注A,B的大小。
相关文章推荐
- 华为2012秋季校招机试题-数组处理(题目源自网络)
- 华为2016校招机试题(2015年9月) 海大上午场(包含实现代码,运行环境为VS2010)
- 2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)
- 2016年华为秋招机试题——2.字符串排序(200分)
- 华为校招上机笔试试题(B卷)——java实现
- 华为2012秋季校招机试题-数组奇偶交叉重组(题目源自网络)
- 2016年华为秋招机试题——3.整数排序(300分)
- 华为2017校招机试题
- 2013 华为校招机试题
- 2014届华为校招软件类机试题(机试时间:2013年9月)
- 华为2014校招机试题
- 2015华为校招机试题
- 2016年华为上机考试试题答案
- 2013 华为校招机试题
- 2016年华为秋招机试题——1.回文数字判断(100分)
- 2016校招华为机试题——好友推荐
- 2016年华为机试题
- 2015华为校招机试题
- 2016华为校招机试题(软件开发)
- 2016年华为机试题(贪心算法)