当前位置: 首页 > news >正文

Java数据结构算法(最长递增序列二分查找)

前言:

最长递增子序列(Longest Increasing Subsequence, LIS)是指在一个给定的序列中,找到一个最长的子序列,使得这个子序列中的元素是单调递增的。子序列不要求在原序列中连续。

实现原理

  • 使用一个 tails 列表,其中 tails[i] 存储长度为 i+1 的所有递增子序列中最后一个元素的最小值。
  • 对于每个元素 num,使用二分查找找到 numtails 中的插入位置。如果 num 大于 tails 中的所有元素,则将 num 添加到 tails 的末尾,否则更新相应位置的元素。
  • tails 的长度即为最长递增子序列的长度。

实现代码

import java.util.ArrayList;
import java.util.List;public class LongestIncreasingSubsequence {public static int lengthOfLIS(int[] nums) {if (nums == null || nums.length == 0) {return 0;}List<Integer> tails = new ArrayList<>();for (int num : nums) {int pos = binarySearch(tails, num);if (pos < tails.size()) {tails.set(pos, num);} else {tails.add(num);}}return tails.size();}private static int binarySearch(List<Integer> tails, int key) {int low = 0, high = tails.size() - 1;while (low <= high) {int mid = low + (high - low) / 2;if (tails.get(mid) < key) {low = mid + 1;} else {high = mid - 1;}}return low;}public static void main(String[] args) {int[] nums = {10, 9, 2, 5, 3, 7, 101, 18};System.out.println(lengthOfLIS(nums));  // 输出 4}
}

QA1:

http://www.lryc.cn/news/385398.html

相关文章:

  • 编译VTK静态库
  • Python中的@property装饰器:深入理解与应用
  • springCloudalibabaAI孵化(一)
  • 【封装】Unity编辑器模式GUID加载资源
  • 安装 Docker 环境(通过云平台创建一个实例实现)
  • MySQL之可扩展性(六)
  • C++ | Leetcode C++题解之第202题快乐数
  • NIST网络安全框架体系应用
  • 【LeetCode】七、树、堆、图
  • FPGA PCIe加载提速方案
  • Hi3861 OpenHarmony嵌入式应用入门--轮询按键
  • js,uni 自定义 时间选择器 vue2
  • 搜索引擎的原理与相关知识
  • React:tabs或标签页自定义右击菜单内容,支持内嵌iframe关闭菜单方案
  • Taro +vue3 中的微信小程序中的分享
  • 视频监控EasyCVR视频汇聚/智能边缘网关:EasySearch无法探测到服务器如何处理?
  • openlayer 鼠标点击船舶,打开船舶简单弹框
  • 数据挖掘常见算法(关联)
  • vue项目集成CanvasEditor实现Word在线编辑器
  • Redis Stream Redisson Stream
  • threadX netx 设置IP地址以及获取IP地址
  • 计算机毕业设计hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计
  • lammps已经运算结束,有数据忘记算:rerun 命令
  • CARLA自动驾驶模拟器基础
  • 华为HCIP Datacom H12-821 卷16
  • Python学习打卡:day17
  • Spring Cloud Gateway 与 Nacos 的完美结合
  • vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选
  • [数据集][目标检测]电力场景下电柜箱门把手检测数据集VOC+YOLO格式1167张1类别
  • OverTheWire Bandit 靶场通关解析(上)