300. Longest Increasing Subsequence

来源:互联网 发布:python 目录名称无效 编辑:程序博客网 时间:2024/05/20 09:10
动态规划
class Solution(object):    def lengthOfLIS(self, nums):        """        :type nums: List[int]        :rtype: int        """        if not nums:            return 0        result = [nums[0]]        l = len(result)        for v in nums[1:]:            index_v = self.upper(result, v, 0, len(result) - 1)            if index_v == len(result):                result.append(v)            else:                result[index_v] = v            l = max(l, index_v + 1)        return l                        def upper(self, r, v, left, right):        if v > r[right]:            return right + 1        if v < r[left]:            return left        mid = (left + right) >> 1        if r[mid] > v:            return self.upper(r, v, left, mid - 1)        elif r[mid] == v:            return mid        else:            return self.upper(r, v, mid + 1, right)    

原创粉丝点击