首页 > 其他分享 >【LeeCode】1035. 不相交的线

【LeeCode】1035. 不相交的线

时间:2023-04-12 23:06:35浏览次数:45  
标签:连线 int 相交 LeeCode 绘制 nums1 nums2 1035

【题目描述】

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。

现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:

  •  nums1[i] == nums2[j]
  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

 https://leetcode.cn/problems/uncrossed-lines/


【示例】

【LeeCode】1035. 不相交的线_java


【代码】admin

同 【LeeCode】1143. 最长公共子序列(连续)

package com.company;
import java.util.*;

// 2023-04-12
class Solution {
    public int maxUncrossedLines(int[] nums1, int[] nums2) {
        int M = nums1.length;
        int N = nums2.length;

        int[][] dp = new int[M + 1][N + 1];
        dp[0][0] = 0;

        for (int i = 1; i <= M; i++){
            for (int j = 1; j <= N; j++){
                // 注意,这里是i-1, 因为从1开始的
                if (nums1[i - 1] == nums2[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }else{
                    dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
                }
            }
        }
        System.out.println(dp[M][N]);
        return dp[M][N];
    }
}

public class Test {
    public static void main(String[] args) {
        new Solution().maxUncrossedLines(new int[]{1,4,2}, new int[]{1,2,4}); // 输出: 2
        new Solution().maxUncrossedLines(new int[]{2,5,1,2,5}, new int[]{10,5,2,1,5,2}); // 输出: 3
        new Solution().maxUncrossedLines(new int[]{1,3,7,1,7,5}, new int[]{1,9,2,5,1}); // 输出: 2
    }
}




标签:连线,int,相交,LeeCode,绘制,nums1,nums2,1035
From: https://blog.51cto.com/u_13682316/6186339

相关文章

  • 两个链表相交问题
    给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交: 题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。题目链接链表相交classSolutio......
  • 四种语言刷算法之相交链表
    力扣160. 相交链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*getIntersectionNode(structListNode*headA,structListNode*headB){if(headA==NULL||headB==NU......
  • leecode-day6
    1.152乘积最大连续子数组题目描述:给你一个整数数组nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位整数。子数组是数组的连续子序列。152乘积最大连续子数组思路:这道题跟day5的连续......
  • mysql - 在 MySQL 空间数据库中查找相交区域
    在MySQL数据库中,如何找到完全或部分落在距另一点一定距离内的圆形区域?有很多例子可以找到某个半径内的点,但没有找到与该半径相交的圆形区域。我有一份为某些区域(点和半径)提供服务的承包商列表。客户需要能够根据与他们的距离找到这些承包商。最佳答案我认为您正在寻找......
  • 【LeeCode】523.连续的子数组和
    【题目描述】给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x=n*k ,则称 x......
  • 【LeeCode】2399. 检查相同字母间的距离
    【题目描述】给你一个下标从 0 开始的字符串 s ,该字符串仅由小写英文字母组成,s 中的每个字母都 恰好 出现 两次 。另给你一个下标从 0 开始、长度为 26 的的整数数组 distance 。字母表中的每个字母按从 0 到 25 依次编号(即,'a'->0, 'b'->1, 'c'->2,.........
  • 【LeeCode】162. 寻找峰值
    【题目描述】峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1]=nums[n]=-∞ 。你必须实现时间复杂度为 O(logn) 的算法来解决此问题......
  • 【LeeCode】441. 排列硬币
    【题目描述】你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。https://leetcode.cn/problems/arranging-coins/【示例......
  • 【LeeCode】2427. 公因子的数目
    【题目描述】给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。 https://leetcode.cn/problems/number-of-common-factors/【示例】【代码】adminpackagecom.company;//2023-04-0......
  • 1035. 不相交的线
    题目描述给了两个数组,可以把数组中相同的数组连起来,限制条件是连线不能相交问最多能连多少根?f1-最长公共子序列基本分析为啥不能贪心?例如134和341,如果1一定要往后取,只能1,最好的结果是2怎么变形?找到两个字符串的LCS,可以满足索引的限制要求为啥在求LCS的时候会存在重复情况?......