分享頭條面試題,是不是又涼了呢

算法題

給定無序數組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>


分享到:


相關文章: