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