A
A
Algorithm Practice
Search…
A
A
Algorithm Practice
Introduction
Lintcode
Leetcode
Math
Tree
Graph
Two Pointers
3 Longest Substring Without Repeating Characters
11 Container With Most Water
15 3Sum
16 3Sum Closest
18 4Sum
26 Remove Duplicates from Sorted Array
27 Remove Element
30 Substring with Concatenation of All Words
42 Trapping Rain Water
76 Minimum Window Substring
80 Remove Duplicates from Sorted Array II
88 Merge Sorted Array
125 Valid Palindrome
159 Longest Substring with At Most Two Distinct Characters
167 Two Sum II - Input array is sorted
202 Happy Number
209 Minimum Size Subarray Sum
259 3Sum Smaller
283 Move Zeroes
340 Longest Substring with At Most K Distinct Characters
344 Reverse String
345 Reverse Vowels of a String
349 Intersection of Two Arrays
350 Intersection of Two Arrays II
360 Sort Transformed Array
395 Longest Substring with At Least K Repeating Characters
424 Longest Repeating Character Replacement
438 Find All Anagrams in a String
487 Max Consecutive Ones II
524 Longest Word in Dictionary through Deleting
532 K-diff Pairs in an Array
567 Permutation in String
611 Valid Triangle Number
632 Smallest Range
713 Subarray Product Less Than K
723 Candy Crush
763 Partition Labels
Linked List
Topological Sort
Hash Table
Trie
Sort
Binary Search
Heap
Breadth First Search
Stack
Backtracking
Dynamic Programming
Union Find
Scan Line
String
Reservoir Sampling
Recursion
Google
Powered By
GitBook
611 Valid Triangle Number
611.
Valid Triangle Number
1. Question
Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle.
Example 1:
1
Input: [2,2,3,4]
2
3
Output: 3
4
5
Explanation:
6
Valid combinations are:
7
2,3,4 (using the first 2)
8
2,3,4 (using the second 2)
9
2,2,3
Copied!
2. Implementation
(1) Two Pointer
1
class
Solution
{
2
public
int
triangleNumber
(
int
[]
nums
)
{
3
if
(
nums
==
null
||
nums
.
length
<=
2
)
{
4
return
0
;
5
}
6
7
Arrays
.
sort
(
nums
);
8
int
count
=
0
;
9
10
for
(
int
i
=
0
;
i
<
nums
.
length
-
2
;
i
++
)
{
11
int
k
=
i
+
2
;
12
for
(
int
j
=
i
+
1
;
nums
[
i
]
!=
0
&&
j
<
nums
.
length
-
1
;
j
++
)
{
13
while
(
k
<
nums
.
length
&&
nums
[
i
]
+
nums
[
j
]
>
nums
[
k
])
{
14
k
++
;
15
}
16
count
+=
k
-
j
-
1
;
17
}
18
}
19
return
count
;
20
}
21
}
Copied!
3. Time & Space Complexity
Two Pointer: 时间复杂度O(n^2), 空间复杂度O(1),因为sorting需要空间
Previous
567 Permutation in String
Next
632 Smallest Range
Last modified
2yr ago
Copy link
Contents
611. Valid Triangle Number
1. Question
2. Implementation
3. Time & Space Complexity