1035. 不相交的线
1. 题目
1035. 不相交的线
2. 解题思路
题目一看是求最值,那就可以考虑用DP来做。
核心点就是确定DP数组的含义以及状态转移方程:
- dp数组含义:dp[i][j],nums1 前 i 个数和 nums2 前 j 个数的最大连线数
dp[i][j] = dp[i - 1][j - 1] + 1;可以在这两个元素之间画一条线,所以当前的最大线数等于dp[i-1][j-1] + 1。即在之前的最优解上多加一条新线。- 无法直接连接当前元素,当前状态的最大线数应该是从前面的状态转移过来,选择
dp[i-1][j]或dp[i][j-1]中较大的那个值(即两个数组中前面的最优解)。
3. 代码
3.1. 注意事项
[!NOTE] 1、DP数组的大小
因为DP的含义是前N个数,所以前0个数相当于没有啥用,所以要获取到最后题目要求的结果那就是要dp[m][n],所以初始化大小要初始化为int[m + 1][n + 1]
[!NOTE] 2、for循环边界
还是根据DP数组的含义,需要到达m和n,所以for循环需要能够等于数组长度
[!NOTE] 3、为什么for循环里面用
nums1[i - 1] == nums2[j - 1]而不用nums[i]来判断
因为动态规划数组f[i][j]的下标从1开始,而nums1和nums2的数组下标是从0开始的。通过使用i-1和j-1来索引nums1和nums2,可以正确对齐两个数组的元素与动态规划表的状态。
3.2. 完整代码
class Solution {public int maxUncrossedLines(int[] nums1, int[] nums2) {int m = nums1.length;int n = nums2.length;if (m == 0 || n == 0) {return 0;}//dp数组含义:dp[i][j],nums1 前 i 个数和 nums2 前 j 个数的最大连线数int[][] dp = new int[m + 1][n + 1];//初始化base case 默认dp[0][0]为0,即前0个数的最大连线数是0for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[m][n];}
}
相关文章:
1035. 不相交的线
1. 题目 1035. 不相交的线 2. 解题思路 题目一看是求最值,那就可以考虑用DP来做。 核心点就是确定DP数组的含义以及状态转移方程: dp数组含义:dp[i][j],nums1 前 i 个数和 nums2 前 j 个数的最大连线数dp[i][j] dp[i - 1][j …...
1.pytest基础知识(默认的测试用例的规则以及基础应用)
一、pytest单元测试框架 1)什么是单元测试框架 单元测试是指再软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。 2)单元测试框架 java:junit和testing python:un…...
Linux常见查看文件命令
目录 一、cat 1.1. 查看文件内容 1.2. 创建文件 1.3. 追加内容到文件 1.4. 连接文件 1.5. 显示多个文件的内容 1.6. 使用管道 1.7. 查看文件的最后几行 1.8. 使用 -n 选项显示行号 1.9. 使用 -b 选项仅显示非空行的行号 二、tac 三、less 四、more 五、head 六、…...
初识 performance_schema:轻松掌握MySQL性能监控
什么是 performance_schema performance_schema 是 MySQL 5.8 版本的一个强大功能,它就像是一个内置的**“性能侦探”**,专门用来监控和分析 MySQL 服务器的资源消耗和等待情况。有了它,数据库管理员和开发者就能实时了解服务器的运行状态&a…...
linux下top命令查看和解释
怎么看top结果: top - 10:20:48 up 8 days, 14:07, 2 users, load average: 6.04, 5.82, 4.73 Tasks: 11099 total, 1 running, 10916 sleeping, 0 stopped, 1 zombie %Cpu(s): 8.9 us, 4.6 sy, 0.0 ni, 86.1 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st K…...
换个手机IP地址是不是不一样?
在当今这个信息爆炸的时代,手机已经成为我们生活中不可或缺的一部分。而IP地址,作为手机连接网络的桥梁,也时常引起我们的关注。你是否曾经好奇,换个手机,IP地址会不会也跟着变呢?本文将深入探讨这个问题&a…...
【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?
参考目录 前言什么是"computer"?计算机的大致发展历程计算机系统结构阶段(1946~1981)计算机网络和视窗阶段(1982~2007)复杂信息系统阶段(2008~today)人工智能阶段 越新的语言是越好的吗、越值得学习吗? 前言 最近读了 《Python语言程序设计基础》 这本书…...
《Google软件测试之道》笔记
介绍 GTAC:Google Test Automation Conference,Google测试自动化大会。 本书出版之前还有一本《微软测试之道》,值得阅读。 质量不是被测试出来的,但未经测试也不可能开发出有质量的软件。质量是开发过程的问题,而不…...
实战讲稿:Spring Boot整合MyBatis
文章目录 实战讲稿:Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…...
基于深度学习的眼部疾病检测识别系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 眼部疾病的早期诊断对于防止视力下降乃至失明至关重要。然而,专业的医疗资源分布不均,尤其是在偏远地区,人们很难获得专业的眼科医生提供的及时诊断服务。本系统…...
curl格式化json之jq工具?
jq 是一个轻量级的命令行工具,用于解析、操作和格式化 JSON 数据。它类似于 sed 或 awk,但专门用于处理 JSON 格式。使用 jq,你可以从复杂的 JSON 数据中提取所需的信息,格式化输出,进行数据筛选,甚至修改 …...
百收SEO蜘蛛池
百收SEO蜘蛛池 网站搜索排名上不去?SSL证书来帮忙! #SSL证书#网站优化#搜索引擎优化 谷歌蜘蛛石的话有非常多的一个重要性,首先的话就是能够提升我们网站的一个输入,尤其是对于我们百收SEO蜘蛛池新站来说,我们在做独立…...
(娱乐)魔改浏览器-任务栏图标右上角加提示徽章
一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…...
JVM相关
1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…...
9.18 微信小程序开发笔记
如何获取英语单词的发音,使其能在小程序界面通过点击外发? 1.通过外界API获取(例如有道API) 不下载音频文件,每次需要时直接API获取发音,存储压力小。但是一般的API都有使用次数限制,在背单词…...
dpdk课程学习之练习笔记八(dpvs的了解)
只是看到这个,跟着流程做一下练习,了解这个东东是干啥的,再就是搭建环境,基于dpdk的环境,顺手也就练习dpdk的环境搭建了。 0:总结 1:知道了lvs能实现的功能,挺强大。 2࿱…...
Linux标准IO-系统调用详解
1.1 系统调用 系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通…...
LeetCode004-两个有序数组的中位数-最优算法代码讲解
最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…...
Unity携程Coroutine用法
一.携程概述 官方的解释是,携程允许你可以在多个帧中执行任务。在Unity中,携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔,展示了携程的基础写法 using System.Colle…...
腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆
之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 子串 560.和为K的子数组...
工业相机丢帧问题全解析:从硬件到软件的5个实战解决方案
工业相机丢帧问题全解析:从硬件到软件的5个实战解决方案 在机器视觉系统的实际应用中,工业相机丢帧问题就像一条潜伏的生产线杀手——它可能悄无声息地导致检测漏判、定位偏差甚至整批产品质检失效。去年某汽车零部件厂商就曾因2%的随机丢帧,…...
OpenClaw私有化部署指南:Qwen3-VL:30B+飞书智能助手
OpenClaw私有化部署指南:Qwen3-VL:30B飞书智能助手 1. 为什么选择本地化部署? 去年我接手了一个需要处理大量敏感数据的项目,团队最初尝试使用公有云API,但很快遇到了数据合规问题。这促使我开始研究本地化AI解决方案࿰…...
【C++11 右值引用超详解】从原理到实战:移动语义 /forward/emplace 彻底吃透
前言在 C98 时代,我们只知道 “左值” 和 “右值”,但随着程序复杂度提升,无谓的拷贝问题越来越突出 —— 函数返回对象、容器插入元素、临时对象销毁,大量拷贝操作严重拖慢程序性能。C11 为了解决这个痛点,引入了右值…...
终极指南:如何用qmc-decoder轻松解锁QQ音乐加密文件
终极指南:如何用qmc-decoder轻松解锁QQ音乐加密文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经从QQ音乐下载了喜爱的歌曲,却发现只能…...
VSCode 集成 DeepSeek:提升编程效率的终极指南
1. 为什么要在VSCode中集成DeepSeek? 作为一个写了十几年代码的老程序员,我见过太多开发者把时间浪费在重复劳动上。直到去年尝试了DeepSeek和VSCode的组合,才发现原来编程可以这么高效。简单来说,DeepSeek就像是你身边24小时待命…...
Qwen-Image-2512保姆级教程:从零开始构建个人像素艺术AI工作室
Qwen-Image-2512保姆级教程:从零开始构建个人像素艺术AI工作室 1. 为什么选择Qwen-Image-2512做像素艺术 像素艺术近年来在游戏开发、NFT创作和数字艺术领域越来越受欢迎。传统手工绘制像素图需要专业美术功底,而Qwen-Image-2512结合Pixel Art LoRA的技…...
知识管理革命:OpenClaw+ollama-QwQ-32B构建个人第二大脑
知识管理革命:OpenClawollama-QwQ-32B构建个人第二大脑 1. 为什么我们需要"第二大脑"? 作为一个长期被信息过载困扰的技术写作者,我每天要处理几十篇技术文档、研究论文和行业动态。最痛苦的不是获取信息,而是如何有效…...
J-Flash烧录KEA128芯片全流程指南(附常见错误排查)
J-Flash烧录KEA128芯片全流程指南(附常见错误排查) 对于嵌入式开发工程师来说,掌握可靠的烧录工具是基本功。J-Flash作为SEGGER公司推出的专业烧录软件,以其稳定性和广泛的芯片支持著称。本文将带你从零开始,手把手完成…...
别再只会用按钮上传了!用JEECG的JUpload组件打造更优雅的后台文件管理界面
从按钮到拖拽:用JEECG的JUpload组件重构后台文件管理体验 在后台管理系统开发中,文件上传功能几乎是每个项目都无法绕开的刚需。但你是否注意到,大多数开发者仍然停留在传统的按钮式上传方式?这种"点击-选择-上传"的三部…...
基于本机配置的 YOLO26 Conda ss安装教程:Windows 11 + RTX 3050 Ti 实战版
基于本机配置的 YOLO26 Conda 环境安装教程:Windows 11 RTX 3050 Ti 实战版 这篇文章不是泛泛而谈的“通用装环境教程”,而是按你这台电脑当前的实际配置整理出来的一份可直接照做的安装方案。 如果你以前没有配过深度学习环境,只想先把 co…...
