LeetCode 334 Increasing Triplet Subsequence (两种方法)
2018-01-30 13:23
435 查看
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
Formally the function should:
Return true if there exists i, j, k
such that arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1 else return false.
Your algorithm should run in O(n) time complexity and O(1) space complexity.
Examples:
Given
return
Given
return
题目链接:https://leetcode.com/problems/increasing-triplet-subsequence/description/
题目分析:
法1:容易联想到nlogn求LIS的方法,这里只要判断是否存在长度为3的上升子序列,所以O1空间,On时间即可
Formally the function should:
Return true if there exists i, j, k
such that arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1 else return false.
Your algorithm should run in O(n) time complexity and O(1) space complexity.
Examples:
Given
[1, 2, 3, 4, 5],
return
true.
Given
[5, 4, 3, 2, 1],
return
false.
题目链接:https://leetcode.com/problems/increasing-triplet-subsequence/description/
题目分析:
法1:容易联想到nlogn求LIS的方法,这里只要判断是否存在长度为3的上升子序列,所以O1空间,On时间即可
class Solution { public boolean increasingTriplet(int[] nums) { int n = nums.length; if (n < 3) { return false; } int top = 0; int[] stk = new int[5]; stk[++ top] = nums[0]; for (int i = 1; i < n; i++) { if (nums[i] > stk[top]) { stk[++ top] = nums[i]; } else { for (int j = 1; j <= top; j++) { if (stk[j] >= nums[i]) { stk[j] = nums[i]; break; } } } if (top == 3) { return true; } } return false; } }法2:直接维护当前最小和次小,如果某次不能更新,则说明存在
class Solution { public boolean increasingTriplet(int[] nums) { int ma = 2147483647, mi = 2147483647; for (int i = 0; i < nums.length; i++) { if (nums[i] <= mi) { mi = nums[i]; } else if (nums[i] <= ma) { ma = nums[i]; } else { return true; } } return false; } }
相关文章推荐
- Leetcode 334 Increasing Triplet Subsequence
- [Leetcode] #334 Increasing Triplet Subsequence
- LeetCode - 334 - Increasing Triplet Subsequence
- LeetCode[334] Increasing Triplet Subsequence
- LeetCode 334: Increasing Triplet Subsequence
- leetcode——334—— Increasing Triplet Subsequence
- LeetCode 334 Increasing Triplet Subsequence
- leetcode_334 Increasing Triplet Subsequence
- 【LeetCode】Increasing Triplet Subsequence(334)
- LeetCode 334 Increasing Triplet Subsequence
- leetcode 334 : Increasing Triplet Subsequence : 被智商压制
- leetcode_334. Increasing Triplet Subsequence ? 待解决
- leetcode 334 Increasing Triplet Subsequence C++
- 【LeetCode-334】Increasing Triplet Subsequence
- [leetcode-334]Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- LeetCode——Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- LeetCode "Increasing Triplet Subsequence" !!
- LeetCode Increasing Triplet Subsequence