Skip to content

Commit 0f0cfd4

Browse files
authored
Add solution for Valid Triangle Number problem
Implement two-pointer approach to count valid triangle numbers.
1 parent b6176fc commit 0f0cfd4

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#
2+
3+
'''
4+
1. 아이디어 :
5+
투포인터를 사용.
6+
i에 위치한 숫자가 왼쪽+오른쪽 값보다 작으면 삼각형이 만들어진다.
7+
오른쪽 포인터를 이동하여 유요한지 확인
8+
else
9+
왼쪽 포인터를 이동.
10+
11+
2. 시간복잡도 :
12+
O(n*n)
13+
14+
3. 자료구조/알고리즘 :
15+
투포인터
16+
17+
'''
18+
class Solution:
19+
def triangleNumber(self, nums: List[int]) -> int:
20+
nums.sort()
21+
n = len(nums)
22+
ans = 0
23+
24+
for i in range(n-1, 1, -1):
25+
left = 0
26+
right = i - 1
27+
28+
while left < right:
29+
if nums[left] + nums[right] > nums[i]:
30+
ans += right - left
31+
right -= 1
32+
else:
33+
left += 1
34+
return ans
35+
36+
# nums.sort()
37+
# def binary_search(side1, side2, mid_index):
38+
# left = mid_index
39+
# right = n
40+
41+
# while left < right:
42+
# mid = (left+right) // 2
43+
# longest = nums[mid]
44+
# if longest < side1 + side2:
45+
# left = mid+1
46+
# else:
47+
# right = mid
48+
# return left
49+
50+
# n = len(nums)
51+
# ans = 0
52+
# for i in range(n):
53+
# if nums[i] == 0:
54+
# continue
55+
# for j in range(i+1, n):
56+
# end = binary_search(nums[i], nums[j], j+1)
57+
# ans += end - (j+1)
58+
# return ans

0 commit comments

Comments
 (0)