算法题
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 1,2,3,4为连续的自然数)
示例1
输入 {100,4,200,1,3,2}
输出 4
示例2 输入 {200,201,202,100,4,200,1,3,2,204,203}
输出 5
<code>import
java.util.Scanner;import
java.util.*;import
java.lang.Integer;public
class
Main
{public
static
void
main
(String[] args)
{ Scanner scanner =new
Scanner(System.in); String lineStr = scanner.nextLine(); String[] elements =lineStr.split(" "
); Listlist
=new
ArrayList();for
(int
i=0
; ilist.add(Integer.parseInt(elements[i])); } Collections.sort(list
);int
targetLen =0
;int
startNum =list
.get(0
);int
currentMaxLen=1
;for
(int
k=1
; k<list
.size(); k++){if
(list
.get(k) == startNum+1
){ currentMaxLen = currentMaxLen +1
; }else
{if
(currentMaxLen>targetLen){ targetLen = currentMaxLen; } startNum =list
.get(k); } } System.out.println(targetLen); } } /<code>
1、OOM线上处理
2、加密方案、电子签章的项目情况
3、分布式锁的原理,zookeeper、redis分布式锁
4、redis底层数据结构
5、spring AOP原理
6、消息队列的使用情况
7、大数据处理的情况
8、HashMap的底层原理
9、换工作的原因
10、MQ消息丢失问题处理
11、蓝牙的通信协议
12、项目微服务的拆分的情况,及原理
综合:现场打的算法 题还是有误,面试官提示加了一个判断条件后,还是有误。修改后如下
<code>package test;import
java.util.Scanner;import
java.util.*;import
java.lang.Integer;public
class
Main
{public
static
void
main
(String[] args)
{ Scanner scanner =new
Scanner(System.in); String lineStr = scanner.nextLine(); String[] elements = lineStr.split(" "
); Vectorlist
=new
Vector();for
(int
i =0
; i if(!list
.contains(val)){list
.add(val); } } Collections.sort(list
); System.out.println(list
);int
targetLen =0
;int
startNum =list
.get(0
);int
currentMaxLen =1
;for
(int
k =1
; k list.size(); k++) {int
e =list
.get(k); startNum = startNum +1
;if
( e == startNum) { currentMaxLen = currentMaxLen +1
; }else
{if
(currentMaxLen > targetLen) { targetLen = currentMaxLen; } startNum =list
.get(k); currentMaxLen =1
; System.out.println(startNum); }if
(k ==list
.size()-1
){if
(currentMaxLen > targetLen) { targetLen = currentMaxLen; } } } System.out.println(targetLen); } } /<code>