forked from Sniper7sumit/Hacktoberfest2021
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLongest Increasing Subsequence .cpp
More file actions
33 lines (24 loc) · 933 Bytes
/
Longest Increasing Subsequence .cpp
File metadata and controls
33 lines (24 loc) · 933 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Given an integer array nums, return the length of the longest strictly increasing subsequence.
// A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example, [3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].
// Example 1:
// Input: nums = [10,9,2,5,3,7,101,18]
// Output: 4
// Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
// Example 2:
// Input: nums = [0,1,0,3,2,3]
// Output: 4
// Example 3:
// Input: nums = [7,7,7,7,7,7,7]
// Output: 1
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
vector<int>res;
for(int i=0;i<nums.size();i++){
auto it=lower_bound(res.begin(),res.end(),nums[i]);
if(it==res.end())res.push_back(nums[i]);
else *it=nums[i];
}
return res.size();
}
};