File tree 5 files changed +162
-0
lines changed
longest-consecutive-sequence
5 files changed +162
-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 Solution {
5
+
6
+ /** 217. 중복된 수
7
+ * 정수 배열 nums가 주어졌을 때 배열 요소 중 한 개 이상이 두 번 이상 중복되어
8
+ * 나타는 경우 true를, 모든 배열의 요소가 고유한 경우 false를 반환
9
+ */
10
+ public boolean containsDuplicate (int [] nums ) {
11
+
12
+ Set <Integer > distincts = new HashSet <>();
13
+
14
+ for (int i = 0 ; i < nums .length ; i ++) {
15
+ distincts .add (nums [i ]);
16
+ }
17
+
18
+ return distincts .size () != nums .length ;
19
+ }
20
+ }
21
+
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+
3
+ // 전문적인 강도인 당신은 거리에 있는 집들을 털 계획을 세우고 있다.
4
+ // 조건: 인접한 집들은 연결된 보안 경비 시스팀이 있어 인접한 집을 같은 날에 털 경우 자동적으로 경찰에 연락이 간다.
5
+ // 각 집에 쌓아둔 돈의 양 배열 (정수 배열)이 주어질 때 경찰한테 걸리지 않고 털 수 있는 최대 돈의 양을 반환하시오.
6
+ public int rob (int [] nums ) {
7
+
8
+ // 조건: 1 == nums.length (털 집이 한 곳 뿐)
9
+ if (nums .length == 1 ) {
10
+ return nums [0 ];
11
+ }
12
+
13
+ // DP로 계산
14
+ nums [1 ] = Math .max (nums [0 ], nums [1 ]);
15
+
16
+ for (int i = 2 ; i < nums .length ; i ++) {
17
+ nums [i ] = Math .max (nums [i - 1 ], nums [i - 2 ] + nums [i ]);
18
+ }
19
+
20
+ return nums [nums .length - 1 ];
21
+
22
+ }
23
+
24
+ }
25
+
Original file line number Diff line number Diff line change
1
+
2
+ /**
3
+ * 정렬되지 않은 정수 배열 nums가 주어질 때 가장 긴 연속적인 요소 배열의 길이를 반환
4
+ * */
5
+ import java .util .Arrays ;
6
+ public class Solution {
7
+
8
+ public int longestConsecutive (int [] nums ) {
9
+
10
+ if (nums .length == 0 ) {
11
+ return 0 ;
12
+ }
13
+
14
+ Arrays .sort (nums );
15
+
16
+ int maxCnt = 1 ;
17
+ int cnt = 1 ;
18
+ for (int i = 0 ; i < nums .length - 1 ; i ++) {
19
+ if (nums [i ] == nums [i + 1 ]) {
20
+ continue ;
21
+ }
22
+ if (nums [i ] + 1 == nums [i + 1 ]) {
23
+ cnt ++;
24
+ } else {
25
+ cnt = 1 ;
26
+ }
27
+ maxCnt = Math .max (maxCnt , cnt );
28
+ }
29
+ return maxCnt ;
30
+ }
31
+
32
+ }
Original file line number Diff line number Diff line change
1
+
2
+ /**
3
+ * 정수 배열 nums와 정수 k가 주어질 때 자주 반복되는 값을 K개 반환
4
+ * */
5
+ import java .util .Map ;
6
+ import java .util .HashMap ;
7
+ import java .util .Arrays ;
8
+
9
+ public class Solution {
10
+
11
+ public int [] topKFrequent (int [] nums , int k ) {
12
+ Map <Integer , Integer > map = new HashMap <>();
13
+ for (int i = 0 ; i < nums .length ; i ++) {
14
+ map .put (nums [i ], map .getOrDefault (nums [i ], 0 ) + 1 );
15
+ }
16
+
17
+ int [][] arr = map .entrySet ().stream ()
18
+ .map ((e ) -> new int []{e .getKey (), e .getValue ()})
19
+ .toArray (int [][]::new );
20
+
21
+ Arrays .sort (arr , (f1 , f2 ) -> f2 [1 ] - f1 [1 ]);
22
+
23
+ int [] frequency = new int [k ];
24
+ for (int i = 0 ; i < k ; i ++) {
25
+ frequency [i ] = arr [i ][0 ];
26
+ }
27
+
28
+ return frequency ;
29
+
30
+ }
31
+
32
+ }
33
+
34
+
Original file line number Diff line number Diff line change
1
+ import java .util .Map ;
2
+ import java .util .HashMap ;
3
+
4
+ class Solution {
5
+ // 정수 배열 nums와 정수 target가 주어질 때 두 정수의 합이 target이 되는 배열 요소의 인덱스를 반환
6
+ // 입력받은 배열에는 하나의 해답만 존재한다고 가정할 수 있으며 같은 요소를 한 번 이상 사용할 수는 없다.
7
+ // 반환하는 인덱스의 정렬은 신경쓰지 않아도 된다.
8
+
9
+ public int [] twoSum (int [] nums , int target ) {
10
+
11
+ // 힌트를 참고하여 시간 복잡도 O(n^2) 이하로 줄이기
12
+ // 힌트: Like maybe a hash map to speed up the search?
13
+
14
+ int [] answer = new int [2 ];
15
+
16
+ Map <Integer , Integer > numMap = new HashMap <>();
17
+
18
+ for (int i = 0 ; i < nums .length ; i ++) {
19
+ if (numMap .containsKey (target - nums [i ])) {
20
+ answer [0 ] = numMap .get (target - nums [i ]);
21
+ answer [1 ] = i ;
22
+ break ;
23
+ }
24
+ numMap .put (nums [i ], i );
25
+ }
26
+
27
+ return answer ;
28
+
29
+ }
30
+
31
+ // public int[] twoSum(int[] nums, int target) {
32
+
33
+ // // 전체 탐색 진행
34
+ // int[] answer = new int[2];
35
+
36
+ // for (int i = 0; i < nums.length - 1; i++) {
37
+ // for (int j = i + 1; j < nums.length; j++) {
38
+ // if (nums[i] + nums[j] == target) {
39
+ // answer[0] = i;
40
+ // answer[1] = j;
41
+ // }
42
+ // }
43
+ // }
44
+
45
+ // return answer;
46
+ // }
47
+
48
+ }
49
+
50
+
You can’t perform that action at this time.
0 commit comments