File tree Expand file tree Collapse file tree 5 files changed +162
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 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