1035. Uncrossed Lines

87 篇文章 0 订阅

We write the integers of A and B (in the order they are given) on two separate horizontal lines.

Now, we may draw a straight line connecting two numbers A[i] and B[j] as long as A[i] == B[j], and the line we draw does not intersect any other connecting (non-horizontal) line.

Return the maximum number of connecting lines we can draw in this way.

 

Example 1:

Input: A = [1,4,2], B = [1,2,4]
Output: 2
Explanation: We can draw 2 uncrossed lines as in the diagram.
We cannot draw 3 uncrossed lines, because the line from A[1]=4 to B[2]=4 will intersect the line from A[2]=2 to B[1]=2.

Example 2:

Input: A = [2,5,1,2,5], B = [10,5,2,1,5,2]
Output: 3

Example 3:

Input: A = [1,3,7,1,7,5], B = [1,9,2,5,1]
Output: 2

 

Note:

  1. 1 <= A.length <= 500
  2. 1 <= B.length <= 500
  3. 1 <= A[i], B[i] <= 2000

思路:setting和最长公共子串一样,不能走回头路

class Solution(object):
    def maxUncrossedLines(self, A, B):
        """
        :type A: List[int]
        :type B: List[int]
        :rtype: int
        """
        n,m=len(A),len(B)
        dp=[[0 for _ in range(m)] for _ in range(n)]
        for i in range(n):
            if A[i]==B[0]:
                for k in range(i,n): dp[k][0]=1
                break
        for j in range(m):
            if A[0]==B[j]:
                for k in range(j,m): dp[0][k]=1
                break
        
        for i in range(1,n):
            for j in range(1,m):
                if A[i]==B[j]:
                    dp[i][j]=dp[i-1][j-1]+1
                else:
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1])
        return dp[-1][-1]
    
        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`pygame.draw.lines()` 函数用于在 Pygame 窗口上绘制多条连接的线段。 函数原型如下: ```python pygame.draw.lines(surface, color, closed, pointlist, width=1) ``` 参数说明: - `surface`:要绘制线段的 Surface 对象。 - `color`:线段的颜色,可以是 RGB 元组 `(R, G, B)` 或者通过 `pygame.Color()` 创建的颜色对象。 - `closed`:一个布尔值,表示是否连接起点和终点以形成封闭的多边形。若为 `True`,则会连接起点和终点;若为 `False`,则不连接起点和终点。 - `pointlist`:一个包含多个点坐标的列表,用于指定线段的路径。每个点坐标是一个包含两个整数的元组 `(x, y)`。 - `width`(可选):线段的宽度,默认为 1。 注意事项: - `pointlist` 中的点坐标应按照线段的路径顺序排列。 - 若 `closed` 参数为 `True`,则最后一个点坐标会自动与第一个点坐标连接。 以下是一个示例代码,演示如何使用 `pygame.draw.lines()` 函数绘制多条连接的线段: ```python import pygame # 初始化 Pygame pygame.init() # 创建窗口 screen = pygame.display.set_mode((400, 300)) # 设置窗口标题 pygame.display.set_caption("Lines Demo") # 设置线段的路径 points = [(50, 50), (100, 100), (150, 50), (200, 100), (250, 50), (300, 100)] running = True while running: # 填充窗口背景色 screen.fill((255, 255, 255)) # 绘制线段 pygame.draw.lines(screen, (0, 0, 255), False, points, 2) # 更新窗口显示 pygame.display.flip() # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 退出 Pygame pygame.quit() ``` 运行以上代码,会在窗口中绘制一条连接的蓝色线段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值