2017年携程旅游校招Java研发笔试编程题(3个)

来源:互联网 发布:电信网络的dns是什么 编辑:程序博客网 时间:2024/05/16 06:26
股票利润
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
假如一个数组中存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数)。只允许一次买入和一次卖出,请提供一个算法,计算出通过卖出和买入可以得到的最大利润


输入
价格序列,用,号隔开
输出
最大的可能利润


样例输入
2,3,2,4
样例输出

2

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextLine()) {String line = in.nextLine();String[] arry = line.split(",");int result = 0;int length = arry.length;for (int i = 0; i < length; i++) {int a = Integer.valueOf(arry[i]);for (int j = i + 1; j < length; j++) {int b = Integer.valueOf(arry[j]);if (b > a) {int c = b - a;if (c > result) {result = c;}}}}System.out.println(result);}}}

二分查找
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
请写一个二分查找算法查找一个数最先出现的index,如果数不在集合中需要返回(-1)-当前数应该出现的位置。例如 [1,3,6],查找5,5应该是在index=2的位置但并不在集合中。返回(-1)-2 = -3。
输入
第一行读入一个整数x,表示要查找的数;第二行读入一个正整数n,表示待查找数组的元素个数;第三行读入n个递增整数,构成待查找的数组。
输出
整数x在数组中出现的索引位置(索引从0开始计数);如果不存在,返回(-1)-当前数应该出现的位置。


样例输入
3
5
0 1 3 5 6
样例输出
2

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextInt()) {int num = in.nextInt();int qty = in.nextInt();int nums[] = new int[qty];for (int i = 0; i < qty; i++) {nums[i] = in.nextInt();}System.out.println(binarySearch(nums, num));}}public static int binarySearch(int[] array, int desc) {int low = 0;int high = array.length - 1;int middle = 0;while (low <= high) {middle = (low + high) / 2;if (desc == array[middle]) {return middle;} else if (desc < array[middle]) {high = middle - 1;} else {low = middle + 1;}}int result = 0;for (int i = 0; i < array.length; i++) {if (array[i] < desc) {result++;}}return -1 - result;}}

遍历最短路径长度
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
暴风降临的龙母丹妮莉丝·坦格利安要骑着她的龙以最快的速度游历各国,她的谋士们纷纷献策规划路线。作为她的谋士之一和仰慕者的你,决定冒险穿越到21世纪借助计算机来寻求最优路线。请设计一段程序,读取各国两两之间的距离,距离以邻接矩阵表示,并计算出遍历各国的最短路径长度。
输入
第一行:国家数量,假设为n
后续n行是国家间距离的邻接矩阵表示
输出
遍历各国的最短路径长度


样例输入
4
0,1,2,3
1,0,4,5
2,4,0,2
3,5,2,0
样例输出
5

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextLine()) {int num = Integer.valueOf(in.nextLine());int[][] nums = new int[num][num];for (int i = 0; i < num; i++) {String line = in.nextLine();String[] strs = line.split(",");for (int j = 0; j < num; j++) {nums[i][j] = Integer.valueOf(strs[j]);}}int result = 0;for (int i = 1; i < num; i++) {int a = nums[i][0];for (int j = 0; j < i; j++) {if (nums[i][j] < a) {a = nums[i][j];}}result += a;}System.out.println(result);}}}


在线编译全部百分之百通过。不过不一定就准确。请指教。

0 0
原创粉丝点击