2016校招真题之最大差值

1、题目描述

有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。给定数组A及它的大小n,请返回最大差值。

测试样例:

[10,5],2

返回:0

2、代码实现

 1 package com.wcy.october;
 2
 3 /**
 4  * 时间:2016年10月15日
 5  * 题目:有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。给定数组A及它的大小n,请返回最大差值。
 6  * 测试样例:[10,5],2 返回:0
 7  */
 8 public class LongestDistance {
 9
10     /**
11      * 用户页面测试
12      * @param args
13      */
14     public static void main(String[] args) {
15         LongestDistance test = new LongestDistance();
16         String str = "[10,5],2";
17         int[] arrs = test.getArrs(str);
18         int result = test.getDis(arrs,arrs.length);
19         System.out.println(result);
20     }
21
22     /**
23      * 输入的字符串转换成数组格式
24      * @param str 字符串
25      * @return 转换之后的数组
26      */
27     public int[] getArrs(String str){
28         str = str.replaceAll("\\[", "");
29         str = str.replaceAll("\\]", "");
30         String[] strs = str.split(",");
31         int[] arrs = new int[strs.length-1];
32         for (int i = 0; i < strs.length-1; i++) {
33             arrs[i] = Integer.parseInt(strs[i]);
34         }
35         return arrs;
36     }
37
38     /**
39      * 求最大差值
40      * @param A 输入的数据数组
41      * @param n 数组的大小
42      * @return 最大差值
43      */
44     public int getDis(int[] A, int n) {
45         int tempMaxNum = 0;
46         for (int i = 0; i < A.length; i++) {
47             for (int j = i+1; j < A.length; j++) {
48                 if ((A[j]-A[i]) > tempMaxNum) {
49                     tempMaxNum = A[j]-A[i];
50                 }
51             }
52         }
53         return tempMaxNum;
54     }
55 }

3、另外代码实现,但是不符合牛客网提交要求,不过结果符合的。

 1 package com.wcy.october;
 2
 3 /**
 4  * 时间:2016年10月15日
 5  * 题目:有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。给定数组A及它的大小n,请返回最大差值。
 6  * 测试样例:[10,5],2 返回:0
 7  */
 8 public class LongestDistance3 {
 9
10     /**
11      * 用户页面测试
12      * @param args
13      */
14     public static void main(String[] args) {
15         String str = "[10,5,11],2";
16         String[] strs = LongestDistance3.getArrs(str);
17         int result = LongestDistance3.getLongestDistance(strs);
18         System.out.println(result);
19     }
20
21     /**
22      * 输入的字符串转换成数组格式
23      * @param str 字符串
24      * @return 转换之后的数组
25      */
26     public static String[] getArrs(String str){
27         str = str.replaceAll("\\[", "");
28         str = str.replaceAll("\\]", "");
29         String[] strs = str.split(",");
30         return strs;
31     }
32
33     /**
34      * 求最大差值
35      * @param arrs 数值
36      * @param sizeNum 数组大小
37      * @return 最大差值
38      */
39     public static int getLongestDistance(String[] strs){
40         int tempMaxNum = 0;
41         for (int i = 0; i < strs.length-1; i++) {
42             for (int j = i+1; j < strs.length-1; j++) {
43                 if ((Integer.parseInt(strs[j])-Integer.parseInt(strs[i])) > tempMaxNum) {
44                     tempMaxNum = Integer.parseInt(strs[j])-Integer.parseInt(strs[i]);
45                 }
46             }
47         }
48         return tempMaxNum;
49     }
50
51 }
时间: 2024-10-16 14:14:51

2016校招真题之最大差值的相关文章

2016校招真题之小球的距离

1.题目描述 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果. 测试样例: 100,90,80,70 返回:1020 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月16日 题目:小球的距离 5 * 题目描述:小东和三个

2016校招真题之串的模式匹配

1.题目描述 对于两个字符串A,B.请设计一个高效算法,找到B在A中第一次出现的起始位置.若B未在A中出现,则返回-1.给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案. 测试样例: "acbc",4,"bc",2 返回:2 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月16日 5 * 题目:串的模式匹配 6 * 题目描述:对于两个字符串A,B.请设计一个高效算法,找到B在

2016校招真题之数组单调和

1.题目描述 现定义数组单调和为所有元素i的f(i)值之和.这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和.请设计一个高效算法,计算数组的单调和.给定一个数组A同时给定数组的大小n,请返回数组的单调和.保证数组大小小于等于500,同时保证单调和不会超过int范围. 测试样例: [1,3,5,2,4,6],6 返回:27 2.代码实现 1 import java.util.*; 2 3 public class MonoSum { 4 public static void

2016校招真题编程-懂二进制

题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 解题思路:异或,除二取余 源代码: package SuperHakceMainPackage; import java.util.Scanner; public class SuperHakceMian { int countBitDiff(int n,int m){ return n ^ m; } int findN

腾讯2016校招编程题【PHP实现】

2016腾讯春招的编程题 话不多说,直接上题!!! 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数 . 这道题是以回文为载体,考察两个字符间的最大子串,最大子串算法在表示字符串的关联度上用途很广泛. 而遮到题就是字符串的长度减去其和翻转字符串的长度的最大子串即可.最长子串的算法我一开始也是蒙的.这完全没没思路呀. 后来看到一篇blog,才明白最长子串,好的,最后我们形成代码 代码实现: function solution

2018 拼多多 校招真题 最大乘积

最大乘积 时间限制:1秒 空间限制:32768K 热度指数:8197 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE. 题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 示例1 输入 3 4 1 2 输出 8 思路分析:看到这个题目,下意识想到用Arrays.sort()排一下序, 因为输入的整数可以是负

校招真题练习014 万万没想到之聪明的编辑(头条)

万万没想到之聪明的编辑 题目描述我叫王大锤,是一家出版社的编辑.我发现一个发现拼写错误的捷径: 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC 请听题:请实现大锤的自动校对程序 输入

精灵鼠从入口到出口最少减少速度(2019年哔哩哔哩校招真题)题解

题目以及输入输出描述: 题目很短.意思也很容易读懂. 题目要求就是  有一只老鼠,进入了一个迷宫,迷宫地图的大小为n*n.老鼠要从(起点)(0,0)坐标位置 到达 终点 (n-1,n-1)的位置. 老鼠的行动方式只有两种 —— 向下和向前. 每一个点都会让老鼠的速度降低(减少).求老鼠到达终点的时候最少减少的速度. 解题思路: 我们先考虑最后一步 到达终点,这一步可以从哪里来呢?根据题目分析因为老鼠只可以向下或者向前.所以到达终点(n-1,n-1)前,老鼠不是在(n-1,n-2), 就是在(n-

2017校招真题在线编程-幸运的袋子

题目描述 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的).如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积.例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的.现在让你编程计算一下你可以获得的多少种不同的幸运的袋子. 输入描述: 第一行输入一个正整数n(n ≤ 1000) 第二行为n