力扣1713.得到子序列最少的操作次数

news/2024/11/18 0:11:52/

题目如下

https://leetcode-cn.com/problems/minimum-operations-to-make-a-subsequence/
在这里插入图片描述

题目解析

简单来看会发现这道题目是求最长公共子序列,但是求最长公共子序列的时间复杂度会很高,其实我们可以将这个问题转化为最长上升子序列的解法。根据target中互不相同,我们知道每个数字对应的坐标唯一;
于是最长公共子序列等价于arr用target的坐标转换后构成最长的上升子序列.因为子序列的顺序不会发生改变,还是按照原来的顺序进行排列,我们只需要记录下标即可。代码如下:

class Solution:def minOperations(self, target: List[int], arr: List[int]) -> int:# 数字对应坐标idx_dict = {num: i for i, num in enumerate(target)}stack = []for num in arr:# 只有在target的数字才可能属于公共子序列if num in idx_dict:# 转换坐标idx = idx_dict[num]# 该坐标在当前栈中的位置i = bisect.bisect_left(stack, idx)# 如果在最后要加入元素,否则要修改该位置的元素# 跟一般的讲,i代表了目前这个idx在stack中的大小位置,# 在前面出现还比idx大的stack中的元素是无法和idx构成最长上升子序列的。# i左边的数比idx小,可以和idx构成上升子序列,(idx构成的长度就是i+1)# idx比i的值小,将i替换后可以方便后面构成更优的子序列(越小后面能加入的数越多)if i == len(stack):stack.append(0)stack[i] = idx0# 最终stack的长度就构成了最长上升子序列的长度,用减法即可得到本题答案return len(target) - len(stack)

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

相关文章

codeforces 1713 problem C Build Permutation(思维构造+数论)

input: 3 3 4 7 output: 1 0 2 0 3 2 1 1 0 2 6 5 4 3 题目大意&#xff1a;给我们一个数n&#xff0c;让我们找出一个0~n-1的全排列&#xff0c;a[0]~a[n-1],0<a[i]<n&#xff0c;并且每个数都满足a[i]i为某个数的平方&#xff0c;让我们输出这个排列&#xff0c…

CF 1713 C. Build Permutation 递归 1200

题意&#xff1a;一个长度为 n 从 0 开始的全排列数组 a&#xff0c;求出一种排列方式使对于所有的 i&#xff0c;ai i 为完全平方数。 思路&#xff1a;倒着从最后一个数开始&#xff0c;最后一个数 i 为 n - 1&#xff0c;所以找到第一个大于等于 n - 1 的完全平方数&#…

LeetCode题解(1713):得到子序列的最少操作次数(Python)

题目&#xff1a;原题链接&#xff08;困难&#xff09; 标签&#xff1a;二分查找、贪心算法 解法时间复杂度空间复杂度执行用时Ans 1 (Python) O ( N l o g N ) O(NlogN) O(NlogN) O ( N ) O(N) O(N)272ms (78.33%)Ans 2 (Python)Ans 3 (Python) 解法一&#xff1a; clas…

Linux之CentOS 7.9部署Oracle 11g r2_p13390677_112040最终版简易安装实测验证(桌面模式)

前言&#xff1a; Linux之CentOS 7.9部署Oracle 11g r2最终版安装实测验证&#xff08;桌面模式&#xff09; 介于前段时间的Windows以及linux无桌面模式环境&#xff0c;之前的linux oracl源包因缺失会存在报错现象&#xff0c;这次主要以oracle 11gr2更新包来记录下部署方式&…

1713_Enable子系统以及Trigger子系统的使用

全部学习汇总&#xff1a; GreyZhang/c_basic: little bits of c. (github.com) C语言中经常会有某段代码或者某个函数在特性的条件下执行的处理需求&#xff0c;在C语言中进行这样的描述也是比较简单的。不过&#xff0c;在模型中这也不是什么难事儿&#xff0c;尤其是考虑到…

Android IndexOutOfBoundsException: Inconsistency detected.

问题 RecycleView下拉刷新时&#xff0c;滑倒列表出现了崩溃。 崩溃信息如下&#xff1a; UncaughtException detected: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 5(offset:5).state:15 androidx.recyclerview.widget.RecyclerVi…

mysql 1273错误

错误描述 数据库进行数据传输时&#xff08;将本地数据库导入到服务器数据库&#xff09;时报1273错误&#xff1a;. [Err] [Dtf] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci’ 然后尝试用先将之前数据库转存为SQL文件&#xff0c;再导入sql文件&#xff0c;继续报错 报…

LeetCode 1713 得到子序列的最少操作次数

LeetCode 1713 得到子序列的最少操作次数 题目链接 给你一个数组 target &#xff0c;包含若干 互不相同 的整数&#xff0c;以及另一个整数数组 arr &#xff0c;arr 可能 包含重复元素。 每一次操作中&#xff0c;你可以在 arr 的任意位置插入任一整数。比方说&#xff0c…