求整数数组中最长递增子序列的长度

原创 2018年04月15日 17:39:11

思想:参考https://www.geeksforgeeks.org/longest-monotonically-increasing-subsequence-size-n-log-n/


func CeilIndex(nums[]int,l,r,key int)int  {
	for r-l>1  {
		m :=l+(r-l)/2
		if nums[m]>=key{
			r = m
		}else {
			l = m
		}
	}
	return r
}
func lengthOfLIS(nums []int) int {
	if len(nums)==0{
		return 0
	}

	var tail []int
	tail = append(tail,nums[0])
	for i:=1;i<len(nums);i++{
		if nums[i]<tail[0]{
			tail[0] = nums[i]
		}else if nums[i]>tail[len(tail)-1]{
			tail = append(tail,nums[i])
		}else {
			tail[CeilIndex(tail,-1,len(tail)-1,nums[i])] = nums[i]
		}
	}
	return len(tail)
}

求整数数组中的最长递增子序列长度

昨天在复习软考的时候发现了这样的一个算法,有些地方确实经过一番推敲才搞懂,今天来整理记录一下~ 动态规划通常用来求解最优化问题,在这类问题中,我们通过做出一组选择来达到最优解。在做出每个选择的同时,通...
  • u012421436
  • u012421436
  • 2015-10-25 14:03:51
  • 1063

程序员面试100题之十二:求数组中最长递增子序列

写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度。      例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列为1,2,4,6。      分...
  • Hackbuteer1
  • Hackbuteer1
  • 2011-08-19 22:34:12
  • 6484

编程之美2.16求数组中最长递增子序列Java版

解法三还没写 /* * To change this license header, choose License Headers in Project Properties. * To cha...
  • TT285955925
  • TT285955925
  • 2016-07-01 21:21:22
  • 1612

数组中最长递增子序列-java

 求数组中最长递增子序列写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6。 ...
  • terry84fun
  • terry84fun
  • 2009-11-13 15:38:00
  • 7079

一维数组中最长递增子序列的长度(DP做法)

1. 简述     写一个时间复杂度尽可能低的程序,求一个一维数组中最长递增子序列的长度。     例如在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列的长度为4(如1,...
  • zuihoudebingwen
  • zuihoudebingwen
  • 2013-09-20 12:48:33
  • 1206

Java求给定数组的最长递增子序列

java求解最长递增子序列问题(LIS)
  • Bright_Man
  • Bright_Man
  • 2017-08-22 16:16:12
  • 165

C++计算整数序列的最长递增子序列的长度

给定一个整数序列,计算其中的最长递增子序列的长度,这是一个典型的动态规划的算法。比如8个整数的序列 186 186 150 200 160 130 197 200,最长递增子序列是 150 160 1...
  • na_beginning
  • na_beginning
  • 2016-12-13 16:24:23
  • 1188

最长递增子序列问题

  • 2008年06月20日 23:52
  • 8KB
  • 下载

编程之美 - 数组最长子序列

问题描述: 求一个一维数组的最长递增子序列,时间复杂度尽可能小。 例如:数组 1, -1,2,-3,4,-5,6,-7它的最长递增子序列是 1,2,4,6。 思路: 创建一个数...
  • wangzhiyu1980
  • wangzhiyu1980
  • 2016-06-01 23:01:29
  • 1380

Java-LIS最长递增子序列(动态规划实现)

问题:找出给定数组最长且单调递增的子序列。         解决思路:原数组arr的子序列顺序保持不变,而且排序后的array本身是递增的。这样得到的两个序列的子序列一定是递增的序列。要求出数组ar...
  • qq_30507287
  • qq_30507287
  • 2016-10-16 19:41:12
  • 1416
收藏助手
不良信息举报
您举报文章:求整数数组中最长递增子序列的长度
举报原因:
原因补充:

(最多只允许输入30个字)