千家信息网

golang刷leetcode技巧之如何实现最长上升子序列

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,小编给大家分享一下golang刷leetcode技巧之如何实现最长上升子序列,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:
千家信息网最后更新 2025年12月04日golang刷leetcode技巧之如何实现最长上升子序列

小编给大家分享一下golang刷leetcode技巧之如何实现最长上升子序列,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

给定一个无序的整数数组,找到其中最长上升子序列的长度。

示例:

输入: [10,9,2,5,3,7,101,18]

输出: 4

解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。

说明:

可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。

你算法的时间复杂度应该为 O(n2) 。

进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?

解题思路:

解法1:动态规划

1,用dp[i]标识,i 位置的最大长度

2,状态转移方程为 dp[i]=max(dp[j]+1) ,j>=0 j

3,取dp最大值

解法2:二分查找

1,用数组记录最长递增序列

2,如果当前元素比最大值大,则插在后面

2,通过二分查找在递增序列里查找位置

3,注意和普通二分查找的区别,如果但强位置比序列位置p的元素大,那么插入位置不是p而是p+1

4,输出p的长度

代码实现

func lengthOfLIS(nums []int) int {   if len(nums)<1{       return 0   }   dp:=make([]int,len(nums))    for i:=0;imax{           max=dp[i]       }   }   fmt.Println(dp)   return max}
func lengthOfLIS(nums []int) int {  if len(nums)<1{      return 0  }  var dp []int  dp=append(dp,nums[0])  for i:=1;idp[len(dp)-1]{          dp=append(dp,nums[i])      }else{          l:=0          r:=len(dp)-1          p:=0          for l<=r{              mid:=(l+r)>>1              if nums[i]>dp[mid]{                   p=mid+1                  l=mid+1              }else{                  r=mid-1              }          }           fmt.Println(dp,l,r,p,i,nums[i])           dp[p]=nums[i]            fmt.Println("111",dp,l,r,p,i,nums[i])      }  }  fmt.Println(dp)  return len(dp)}

看完了这篇文章,相信你对"golang刷leetcode技巧之如何实现最长上升子序列"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

序列 最长 升子 位置 长度 最大 输出 技巧 复杂 元素 复杂度 数组 时间 最大值 算法 篇文章 解法 普通 代码 动态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 mysql 数据库视窗 自定义导入数据库 网络技术中心部门职能说明说 网络安全法规定实施 聊天室系统软件开发 易飞用什么软件开发 梦幻西游黑龙江区所有服务器名称 苹果派香港服务器 怎么开csgo社区服务器 电脑版记账软件开发 知乎计算机四级数据库技术 linux系统搭建服务器 深圳直播软件开发公司哪家好 南通营销软件开发管理 如今中国软件开发企业的社会环境 服务器中病毒 临河app软件开发培训课程 网络安全宣传周活动小组 深信服网络安全认证电话多少 温馨小说软件开发 公司开放网络安全吗 软件开发商标多少类 软件开发 系统可行性分析 江津区工商软件开发流程报价表 linux系统搭建服务器 网络安全和信息安全一样吗 服务器的漏洞需要厂商修复吗 如今中国软件开发企业的社会环境 星拥月互联网科技公司福利待遇 实时历史数据库点位
0