File tree Expand file tree Collapse file tree 5 files changed +142
-0
lines changed
kth-smallest-element-in-a-bst Expand file tree Collapse file tree 5 files changed +142
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .Arrays ;
2
+ import java .util .HashSet ;
3
+ import java .util .Set ;
4
+
5
+ class SolutionJaeJeong1 {
6
+ public boolean containsDuplicate (int [] nums ) {
7
+ // ํด์๋งต ์ฌ์ฉํด์ ๊ฐ์ ๊ฐ์ ์นด์ดํธ๊ฐ 1๋ณด๋ค ํฌ๋ฉด true ๋ฐํ
8
+ // ๋๊น์ง ๋ค ๋๋ฉด false ๋ฐํ
9
+ // ๋๋ ํด์์
์ฌ์ฉํด์ ๋ชจ๋ ํด์์
์ ๋ฃ๊ณ
10
+ // ๊ธธ์ด ๋น๊ตํด์ ๊ฐ์ผ๋ฉด false, ๋ค๋ฅด๋ฉด true ๋ฐํ
11
+ // ์๊ฐ๋ณต์ก๋: O(N), ๊ณต๊ฐ๋ณต์ก๋: O(N)
12
+
13
+ Set <Integer > set = Arrays .stream (nums ).collect (HashSet ::new , Set ::add , Set ::addAll );
14
+ return set .size () != nums .length ;
15
+ }
16
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .ArrayList ;
2
+ import java .util .List ;
3
+
4
+ // Definition for a binary tree node.
5
+ class TreeNode {
6
+ int val ;
7
+ TreeNode left ;
8
+ TreeNode right ;
9
+ TreeNode () {}
10
+ TreeNode (int val ) { this .val = val ; }
11
+ TreeNode (int val , TreeNode left , TreeNode right ) {
12
+ this .val = val ;
13
+ this .left = left ;
14
+ this .right = right ;
15
+ }
16
+ }
17
+ class SolutionKthSmallest {
18
+ public int kthSmallest (TreeNode root , int k ) {
19
+ // ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ๋ฃจํธ์ ์ ์ k๊ฐ ์ฃผ์ด์ง๋ฉด ํธ๋ฆฌ์ ์๋ ๋ชจ๋ ๋
ธ๋ ๊ฐ ์ค k๋ฒ์งธ๋ก ์์ ๊ฐ(1-์ธ๋ฑ์ค)์ ๋ฐํํฉ๋๋ค.
20
+ // ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ํน์ฑ์ ์ด์ฉํด ์ค์ ์ํ๋ฅผ ํ๋ฉด ๋
ธ๋ ๊ฐ์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
21
+ // ์ ๋ ฌ ํ k๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
22
+ // ์๊ฐ๋ณต์ก๋: O(N), ๊ณต๊ฐ๋ณต์ก๋: O(N)
23
+ List <Integer > list = new ArrayList <>();
24
+ inorder (root , list );
25
+ return list .get (k - 1 );
26
+ }
27
+
28
+ private void inorder (TreeNode root , List <Integer > list ) {
29
+ if (root == null ) {
30
+ return ;
31
+ }
32
+ inorder (root .left , list );
33
+ list .add (root .val );
34
+ inorder (root .right , list );
35
+ }
36
+ }
Original file line number Diff line number Diff line change
1
+ class SolutionJaejeong1 {
2
+ public int hammingWeight (int n ) {
3
+ // ์ฃผ์ด์ง ์์ ์ ์๋ฅผ ์ด์ง์๋ก ๋ณํํ๊ณ , 1๋ก ์ค์ ๋ ์๋ฆฟ์์ ๊ฐ์๋ฅผ ๋ฐํ
4
+ // ์๊ฐ๋ณต์ก๋: O(1), ๊ณต๊ฐ๋ณต์ก๋: O(1)
5
+ int num = 0 ;
6
+ for (int i =0 ; i <32 ; i ++) {
7
+ if ((n & 1 ) == 1 ) {
8
+ num ++;
9
+ }
10
+ n = n >> 1 ;
11
+ }
12
+ return num ;
13
+ }
14
+ }
Original file line number Diff line number Diff line change
1
+ class SolutionPalindromicSubstrings {
2
+ // 1๋ฒ์จฐ ํ์ด: ๊ตฌํํด์ผํ ๋ก์ง์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ ๊ฒ์ฌ์ ๊ฒ์ฌํ ๋์ ๋ฌธ์์ด์ ๊ตฌํ๋ ๋ก์ง ๋๋ก ๋๋๋ค
3
+ // ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ ๊ฒ์ฌ: ํฌํฌ์ธํฐ ์ฌ์ฉ, lt=0, rt=length-1 ๋ก ์์ํด ๋๋ฑ์ฑ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌ
4
+ // ์๊ฐ๋ณต์ก๋: O(N), ๊ณต๊ฐ๋ณต์ก๋: O(1)
5
+ // ๋์ ๋ฌธ์์ด ๊ตฌํ๊ธฐ: ํฌํฌ์ธํฐ ์ฌ์ฉ. rt๊ฐ length๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์๋๊น์ง ๊ณ์ ์ฆ๊ฐ์ํค๊ณ ,
6
+ // rt๊ฐ ๋์ ๋๋ฌํ๋ฉด lt๋ฅผ ์ฆ๊ฐ์ํค๊ณ , rt๋ฅผ lt+1๋ก ๋ง๋ ๋ค. ๋ชจ๋ ๊ณผ์ ์์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค
7
+ // ์๊ฐ๋ณต์ก๋: O(N), ๊ณต๊ฐ๋ณต์ก๋: O(1)
8
+ // ๊ฒฐ๊ณผ
9
+ // ์๊ฐ๋ณต์ก๋: O(N^2), ๊ณต๊ฐ๋ณต์ก๋: O(1)
10
+
11
+ public int countSubstrings (String s ) {
12
+ var subStrings = s .toCharArray ();
13
+
14
+ if (subStrings .length == 0 ) return 0 ;
15
+ if (subStrings .length == 1 ) return 1 ;
16
+
17
+ var answer = 0 ;
18
+
19
+ var lt = 0 ;
20
+ var rt = 1 ;
21
+ while (lt < subStrings .length ){
22
+ if (isPalindrome (s .substring (lt , rt ))) {
23
+ answer ++;
24
+ }
25
+
26
+ if (rt <= subStrings .length -1 ){
27
+ rt ++;
28
+ } else {
29
+ lt ++;
30
+ rt = lt +1 ;
31
+ }
32
+ }
33
+
34
+ return answer ;
35
+ }
36
+
37
+ private boolean isPalindrome (String s ) {
38
+ var chars = s .toCharArray ();
39
+ var lt = 0 ;
40
+ var rt = chars .length - 1 ;
41
+
42
+ while (lt < rt ) {
43
+ if (chars [lt ] != chars [rt ]) {
44
+ return false ;
45
+ }
46
+ lt ++;
47
+ rt --;
48
+ }
49
+
50
+ return true ;
51
+ }
52
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .HashMap ;
2
+ import java .util .Map ;
3
+
4
+ class SolutionTopKFrequentElements {
5
+ public int [] topKFrequent (int [] nums , int k ) {
6
+ // ๋น๋์์ผ๋ก k๊ฐ ๋ฐํ
7
+ // ๋น๋ ์ฒดํฌ: ํด์๋งต์ผ๋ก ์นด์ดํธ. ์๊ฐ๋ณต์ก๋ O(N), ๊ณต๊ฐ๋ณต์ก๋ O(N)
8
+ // ๋น๋์ ์ ๋ ฌ: sorting, ์๊ฐ๋ณต์ก๋ O(N log N), ๊ณต๊ฐ๋ณต์ก๋ O(N)
9
+ // ํฉ์ฐ: ์๊ฐ๋ณต์ก๋ O(N log N), ๊ณต๊ฐ๋ณต์ก๋ O(N)
10
+
11
+ // ๋น๋ ์ฒดํฌ
12
+ Map <Integer , Integer > freq = new HashMap <>();
13
+ for (int num : nums ) {
14
+ freq .put (num , freq .getOrDefault (num , 0 ) + 1 );
15
+ }
16
+
17
+ // ๋น๋์ ์ ๋ ฌ
18
+ return freq .keySet ().stream ()
19
+ .sorted ((a , b ) -> freq .get (b ) - freq .get (a ))
20
+ .mapToInt (i -> i )
21
+ .limit (k ) // ๋ฐฐ์ด์์ ์์ k๊ฐ๋ง ๋ฐํ
22
+ .toArray ();
23
+ }
24
+ }
You canโt perform that action at this time.
0 commit comments