File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .HashSet ;
2
+ import java .util .Set ;
3
+
4
+ class SolutionLongestConsecutiveSequence {
5
+
6
+ public int longestConsecutive (int [] nums ) {
7
+ // 정렬되지 않은 정수 nums 배열이 주어지면 가장 긴 연속 요소 시퀀스 길이를 반환
8
+ // O(N) 시간 내 실행되야함
9
+ // 전부 해시맵에 때려넣고, 키를 꺼내 연속 요소가 있는지 확인한다
10
+ // 연속 요소가 있으면 answer를 1 증가시키고, 연속 요소는 제거한다
11
+ // 시간복잡도: O(N), 공간복잡도: O(N)
12
+
13
+ Set <Integer > set = new HashSet <>();
14
+ for (var num : nums ) {
15
+ set .add (num );
16
+ }
17
+ var answer = 0 ;
18
+ for (var num : nums ) {
19
+ var length = 1 ;
20
+
21
+ if (set .contains (num -1 )) {
22
+ set .remove (num );
23
+ var minusKey = num ;
24
+ while (set .contains (--minusKey )) {
25
+ length ++;
26
+ set .remove (minusKey );
27
+ }
28
+ }
29
+
30
+ if (set .contains (num +1 )) {
31
+ set .remove (num );
32
+ var plusKey = num ;
33
+ while (set .contains (++plusKey )) {
34
+ length ++;
35
+ set .remove (plusKey );
36
+ }
37
+ }
38
+
39
+ if (length > answer ) {
40
+ answer = length ;
41
+ }
42
+ }
43
+
44
+ return answer ;
45
+ }
46
+ }
You can’t perform that action at this time.
0 commit comments