File tree 3 files changed +87
-0
lines changed
product-of-array-except-self
3 files changed +87
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ 1. 2 <= nums.length <= 10^5
4
+ 2. -30 <= nums[i] <= 30
5
+ 3. The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer
6
+
7
+ Time Complexity: O(n)
8
+ - 배열을 두 번 순회하므로 O(n)
9
+
10
+ Space Complexity: O(1)
11
+ - 출력 배열(answer)을 제외하면 추가 공간이 상수만큼만 필요(left, right 변수)
12
+
13
+ 풀이 방법:
14
+ 1. answer 배열을 1로 초기화 (곱셈에서는 1이 영향을 주지 않음)
15
+ 2. 왼쪽에서 오른쪽으로 순회:
16
+ - answer[i]에 현재까지의 left 누적값을 곱함
17
+ - left *= nums[i]로 다음을 위해 left 값을 업데이트
18
+ 3. 오른쪽에서 왼쪽으로 순회 (range(n-1, -1, -1) 사용):
19
+ - answer[i]에 현재까지의 right 누적값을 곱함
20
+ - right *= nums[i]로 다음을 위해 right 값을 업데이트
21
+ """
22
+
23
+ class Solution :
24
+ def productExceptSelf (self , nums : List [int ]) -> List [int ]:
25
+ n = len (nums )
26
+ answer = [1 ] * n
27
+
28
+ left = 1
29
+ for i in range (n ):
30
+ answer [i ] *= left
31
+ left *= nums [i ]
32
+
33
+ right = 1
34
+ for i in range (n - 1 , - 1 , - 1 ):
35
+ answer [i ] *= right
36
+ right *= nums [i ]
37
+
38
+ return answer
Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - The input must be a binary string of length 32
4
+
5
+ Time Complexity: O(1)
6
+ - 항상 고정된 32비트 문자열에 대해 연산하므로 상수 시간
7
+
8
+ Space Complexity: O(1)
9
+ - 32비트 고정 크기의 문자열 연산만 사용하므로 상수 공간
10
+
11
+ 풀이 방법:
12
+ 1. format(n, '032b')를 사용해 입력받은 정수를 32비트 이진수 문자열로 변환함
13
+ 2. 문자열 슬라이싱 [::-1]으로 비트를 뒤집음
14
+ 3. int(reversed_binary, 2)로 뒤집은 이진수 문자열을 다시 정수로 변환함
15
+ """
16
+
17
+ class Solution :
18
+ def reverseBits (self , n : int ) -> int :
19
+
20
+ binary = format (n , '032b' )
21
+
22
+ reversed_binary = binary [::- 1 ]
23
+
24
+ return int (reversed_binary , 2 )
Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - 2 <= nums.length <= 10^4
4
+ - -10^9 <= nums[i] <= 10^9
5
+ - -10^9 <= target <= 10^9
6
+ - Only one valid answer exists.
7
+
8
+ Time Complexity: O(n²)
9
+ - 중첩 반복문을 사용하기 때문
10
+ - 첫 번째 반복문: n번
11
+ - 각각에 대해 두 번째 반복문: n-1, n-2, ... 1번
12
+ - 따라서 총 연산 횟수는 n * (n-1)/2로 O(n²)
13
+
14
+ Space Complexity: O(1)
15
+ - 추가 공간을 사용하지 않음
16
+ - result 리스트는 항상 크기가 2로 고정
17
+ """
18
+ class Solution :
19
+ def twoSum (self , nums : List [int ], target : int ) -> List [int ]:
20
+ result = []
21
+
22
+ for i in range (len (nums )):
23
+ for j in range (i + 1 , len (nums )):
24
+ if nums [j ] == target - nums [i ]:
25
+ return [i , j ]
You can’t perform that action at this time.
0 commit comments