- Longest Continuous Increasing Subsequence
Given an unsorted array of integers, find the length of longest continuous increasing subsequence (subarray).
Example 1:
Input: [1,3,5,4,7]
Output: 3
Explanation: The longest continuous increasing subsequence is [1,3,5], its length is 3.
Even though [1,3,5,7] is also an increasing subsequence, it's not a continuous one where 5 and 7 are separated by 4.
Example 2:
Input: [2,2,2,2,2]
Output: 1
Explanation: The longest continuous increasing subsequence is [2], its length is 1.
Note: Length of the array will not exceed 10,000.
my thoughts:
1. Looks like a two pointer problem
my solution:
**********48ms
class Solution(object):
def findLengthOfLCIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
l = 1
r = 1
mlen = 0
if len(nums)==0:
return 0
if len(nums)==1:
return 1
while r<len(nums):
if nums[r]>nums[r-1]:
l = l+1
else:
mlen = max(l, mlen)
l = 1
r = r+1
return max(mlen, l)
my comments:
from other ppl's solution:
1. more concise coding, efficiently combining edge cases, 32 ms:
class Solution(object):
def findLengthOfLCIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
res = 1
dp = 1
for i in xrange(1,len(nums)):
if nums[i] > nums[i-1]:
dp += 1
else:
res = max(res, dp)
dp = 1
return max(res, dp)