leetcode:1713. 得到子序列的最少操作次数【最长公共子序列优化 + 转化为最长递增子序列】

news/2024/11/18 4:19:15/

目录

  • 题目截图
  • 题目分析
  • ac code
  • 总结

题目截图

在这里插入图片描述

题目分析

  • 就是要找最长公共子序列
  • 典型的就是m * n的dp,但会超时
  • 特别地,target不重复
  • 因此,可以构造target的v和i的映射
  • 遍历arr,得到target的下标顺序
  • 使用【经典最长递增子序列二分法】得到最终的长度即可

ac code

class Solution:def minOperations(self, target: List[int], arr: List[int]) -> int:# 最长的公共子序列# target不重复,数字下标一一对应# 遍历arr,转化为找对应target下标最长递增子序列ids = {num: i for i, num in enumerate(target)}stack = []# 最长上升子序列for num in arr:if num in ids:id = ids[num]idx = bisect_left(stack, id)if idx == len(stack): # add to tailstack.append(id)else:stack[idx] = id # greedy changereturn len(target) - len(stack)

总结

  • 最长公共子序列优化
  • 下标映射
  • 转化为最长递增子序列,递增保持target中也是一个子序列,最长递增即代表最长子序列

http://www.ppmy.cn/news/582720.html

相关文章

LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)

文章目录 1. 题目2. 解题 1. 题目 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。 每一次操作中,你可以在 arr 的任意位置插入任一整数。 比方说,如果 arr [1,4,…

ANR问题基本定位与分析

一、ANR类型 ANR,即“Application not responding”,在Android中,ManagerService会检测应用的响应时间,如果在约定时间内没有完成,那么系统就会判定应用ANR。 1、输入超时 05-28 11:25:00.420 ?1668 ?1713 E Acti…

力扣LeetCode-1713. 得到子序列的最少操作次数-题解-最长递增子序列

目录 力扣LeetCode-1713. 得到子序列的最少操作次数Problem DescriptionTipsSample ISample II 解题思路AC代码 力扣LeetCode-1713. 得到子序列的最少操作次数 传送门 Problem Description 给你一个数组 t a r g e t target target ,包含若干 互不相同 的整数&a…

Shell:查看进程与对应的线程

1.通过:ps -efL | grep 进程ID或名字 UID PID PPID LWP C NLWP STIME TTY TIME CMD user 228298 201990 228298 0 2 00:14 pts/0 00:00:00 ./t_thread user 228298 201990 228299 0 2 00:14 pts/0 …

【TS】1713- 一看就懂的TypeScript工具类型

TypeScript是一种静态类型检查的编程语言,它内置了许多基本数据类型,如字符串、数字和布尔型等。除了基本数据类型,当某种类型对于大多数代码来说都非常有用时,它们就会被添加到TypeScript中并且被大家使用而无需担心它们的可用性…

1173

1173:阶乘和 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6674 通过数: 3397 【题目描述】 用高精度计算出S1!2!3!…n!(n≤50),其中“!”表示阶乘,例如:5!54321。 输入正整数n,输出计算结果S。 【输入…

leetcode 1277

今天做了一道dp的题,感觉和今年中科大夏令营上机题神似,题目如下(来自leetcode): 我的思路是设置一个二维数组dp,来保存一些信息。这个dp[i][j]保存的是什么呢?是以点 (i,j) 为正方形右下角顶…

leetcode1703

得到连续k个1的最少交换次数 题目:给定一个只有0和1的数组和一个数字k,返回得到k个连续的1的最少交换次数。 这道题是python期末考试的附加题,并且是leetcode原题hard难度,考场上愣是没想出来怎么做,考完来看别人的题解…