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

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 开始,而 nums1nums2 的数组下标是从 0 开始的。通过使用 i-1j-1 来索引 nums1nums2,可以正确对齐两个数组的元素与动态规划表的状态。

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];}
}
http://www.lryc.cn/news/440912.html

相关文章:

  • 1.pytest基础知识(默认的测试用例的规则以及基础应用)
  • Linux常见查看文件命令
  • 初识 performance_schema:轻松掌握MySQL性能监控
  • linux下top命令查看和解释
  • 换个手机IP地址是不是不一样?
  • 【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?
  • 《Google软件测试之道》笔记
  • 实战讲稿:Spring Boot整合MyBatis
  • 基于深度学习的眼部疾病检测识别系统
  • curl格式化json之jq工具?
  • 百收SEO蜘蛛池
  • (娱乐)魔改浏览器-任务栏图标右上角加提示徽章
  • JVM相关
  • 9.18 微信小程序开发笔记
  • dpdk课程学习之练习笔记八(dpvs的了解)
  • Linux标准IO-系统调用详解
  • LeetCode004-两个有序数组的中位数-最优算法代码讲解
  • Unity携程Coroutine用法
  • 腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆
  • 「数据科学」清洗数据,真实数据集中缺失值的查看与处理
  • 彩蛋岛 销冠大模型案例
  • 大数据Flink(一百二十一):Flink CDC基本介绍
  • SqlServer自定义类型的使用
  • LeetCode 滑动窗口 滑动子数组的美丽值
  • 【JavaEE初阶】多线程(4)
  • 初识 C++ ( 1 )
  • Python数据分析 Pandas库-初步认识
  • Flutter问题记录 - 适配Xcode 16和iOS 18
  • VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025
  • 大数相乘,大数相加