zoukankan      html  css  js  c++  java
  • leetcode-300

    此题两个思路,动态规划,二分+贪心,实际上动态规划对于数据量极小的来讲不存在优先考虑的场景,测试也发现并不乐观。

    package leetcode
    
    func lengthOfLIS(nums []int) int {
        if nums == nil || len(nums) == 0 {
            return 0
        }
        m := 1
        d := make([]int, len(nums))
        d[0] = 1
        for i := 1; i < len(nums); i++ {
            for j := 0; j < i; j++ {
                cur := 1
                if nums[i] > nums[j] {
                    cur = d[j] + 1
                }
                d[i] = max(d[i], cur)
            }
            m = max(m, d[i])
        }
        return m
    }
    
    func max(a, b int) int {
        if a > b {
            return a
        } else {
            return b
        }
    }
    
    func lengthOfLISBinarySearch(nums []int) int {
        if nums == nil || len(nums) == 0 {
            return 0
        }
        d := make([]int, len(nums))
        length := 0
        for _, v := range nums {
            i := binartSearchInsertPosition(d, length, v)
            d[i] = v
            if i == length {
                length++
            }
        }
        return length
    }
    
    func binartSearchInsertPosition(d []int, len int, x int) int {
        low, high := 0, len-1
        for low <= high {
            mid := low + (high - low) / 2
            if x < d[mid] {
                high = mid - 1
            } else if x > d[mid] {
                low = mid + 1
            } else {
                return mid
            }
        }
        return low
    }

    end

    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    grunt 使用比较
    一些技术要点
    git 使用笔记
    oo的一些概念
    借用构造函数继承非原型
    bower解决js的依赖管理
    需要了解的一些东西
    一些常用的代码
    js模式(一):单例模式
    写给自己的计划
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12495374.html
Copyright © 2011-2022 走看看