File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ # -- follow up
3
+ # If this function is called many times,
4
+ # how would you optimize it?
5
+ # - ํด๋์ค ๋ณ์๋ก lookup table ๋ง๋ค์ด
6
+ # - 8bits ๋จ์๋ก ๋ฏธ๋ฆฌ ๋นํธ ๋ค์ง์ ํ
์ด๋ธ์ ๋ง๋ค์ด๋๋ ๋ฐฉ๋ฒ
7
+ # _lookup_table_8bit = [0] * 256
8
+ # for i in range(256):
9
+ # val = i
10
+ # rev_val = 0
11
+ # for _ in range(8): # 8๋นํธ ๋ค์ง๊ธฐ
12
+ # rev_val = (rev_val << 1) | (val & 1)
13
+ # val >>= 1
14
+ # _lookup_table_8bit[i] = rev_val
15
+ # def __init__(self):
16
+ # pass
17
+
18
+ def reverseBits (self , n : int ) -> int :
19
+ """
20
+ Time Complexity: O(1)
21
+ Space Complexity: O(1)
22
+ - ํญ์ 32๋ฒ ์ฐ์ฐํ๋ฏ๋ก O(1),
23
+ - ํจ์๊ฐ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ฉด ๋์ ๋์ด ์ฑ๋ฅ ์ํฅ ์ค ์๋ ์์
24
+ -> reverseBits_lookupTable() ์ฌ์ฉ
25
+ """
26
+ reversed_n = 0 # ๋ค์ง์ ๋นํธ ์ ์ฅ
27
+ num_bits = 32
28
+
29
+ for i in range (num_bits ):
30
+ reversed_n <<= 1
31
+
32
+ if (n & 1 ) == 1 :
33
+ reversed_n |= 1
34
+
35
+ n >>= 1
36
+
37
+ return reversed_n
38
+
39
+ def reverseBits_lookupTable (self , n : int ) -> int :
40
+ """
41
+ Time Complexity: O(1)
42
+ Space Complexity: O(1)
43
+ - ๋ฃฉ์
ํ
์ด๋ธ ์์ฑ ์ ๊ณต๊ฐ ํ์
44
+ - ํ์ง๋ง ์ต์ด ํ ๋ฒ๋ง ํ์ํ๋ฏ๋ก
45
+ - ํธ์ถ ๋์ ๋๋ฉด ์ฐ์ฐ๋์ ๋ ์ ์
46
+ """
47
+ b0 = (n >> 0 ) & 0xFF
48
+ b1 = (n >> 8 ) & 0xFF
49
+ b2 = (n >> 16 ) & 0xFF
50
+ b3 = (n >> 24 ) & 0xFF
51
+
52
+ rev_b0 = self ._lookup_table_8bit [b0 ]
53
+ rev_b1 = self ._lookup_table_8bit [b1 ]
54
+ rev_b2 = self ._lookup_table_8bit [b2 ]
55
+ rev_b3 = self ._lookup_table_8bit [b3 ]
56
+
57
+ result = (rev_b0 << 24 ) | (rev_b1 << 16 ) | (rev_b2 << 8 ) | rev_b3
58
+
59
+ return result
You canโt perform that action at this time.
0 commit comments