分享头条面试题,是不是又凉了呢

算法题

给定无序数组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(

" "

);         List 

list

 = 

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(

" "

);         Vector 

list

 = 

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>


分享到:


相關文章: