由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 没人上题,我来上一道吧
相关主题
求教一道最大公约数的题也问一个median的问题
哪里看leetcode上题的难度?[合集] 微软:求一个数列中最长单调上升子列,要求O(nlogn)时间
用了递归以后,怎么计算空间复杂度?G的面试题
关于找最大半径K子集的DP题的总结(更新非DP算法)对自己DFS能力彻底的绝望了。
讨论一下careercup上的一道题,找周边全是1的最大子方阵8 queens问题最好解法是什么?时间复杂度?
CS intern面试经验分享一道Yelp电面题
微软:求一个数列中最长单调上升子列,要求O(nlogn)时间最优合并及证明
Goog面试挂了,回报一下本版(A) intern电面
相关话题的讨论汇总
话题: int话题: ans话题: 操作数话题: pa话题: 操作
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
两个整数1-n的permutation, S和T
每次可以进行一种操作,把S最后一个数字拿出来放在S的任意一个位置。
问通过这种操作把S转变为T的最少操作数。
例如
3 2 1
1 2 3
ans:2
1 2 3 4 5
1 5 2 3 4
ans:1
1 5 2 3 4
1 2 3 4 5
ans:3
1<=n<=2*10^5, n很大,所以基本需要O(n)的复杂度
w****x
发帖数: 2483
2
顶兔爷
j*****n
发帖数: 1545
3
2爷 你自己都能出题了? 牛翻天了。
C***U
发帖数: 2406
4
为什么第一个例子答案是2

两个整数1-n的permutation, S和T每次可以进行一种操作,把S最后一个数字拿出来放
在S的任意一个位置。问通过这种操作把S转变为T的最少操作数。例如3 2 11 2 ......
..
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 p*****2 的大作中提到】
: 两个整数1-n的permutation, S和T
: 每次可以进行一种操作,把S最后一个数字拿出来放在S的任意一个位置。
: 问通过这种操作把S转变为T的最少操作数。
: 例如
: 3 2 1
: 1 2 3
: ans:2
: 1 2 3 4 5
: 1 5 2 3 4
: ans:1

w****x
发帖数: 2483
5
n -最长公共子序列
j********e
发帖数: 1192
6
不对吧,这样第3个例子的答案就是2,而不是3了。
最长公共子序列是234

【在 w****x 的大作中提到】
: n -最长公共子序列
w****x
发帖数: 2483
7

哦,只能是最后一个

【在 j********e 的大作中提到】
: 不对吧,这样第3个例子的答案就是2,而不是3了。
: 最长公共子序列是234

j********e
发帖数: 1192
8
这个算法呢?
从左往右扫描S,对S的第一个数a,从T开始扫,直到T里面碰到a,记下T
里的位置Pa,那么至少需要(Pa-1)次操作。然后取S里的第二个数b,从
T的Pa+1位置继续找b,找到位置Pb后,(Pb-2)是至少的操作数。如此继续,
直到T为空。
int scan(int S[], int T[], int N) {
int p = 0;
int max = 0;
if(!S || !T) return 0;
for(int i=0; i while(p < N && T[p] != S[i])
p++;
if(p == N) {
break;
}
max = p - i;
p++;
}
return max;
}

【在 p*****2 的大作中提到】
: 两个整数1-n的permutation, S和T
: 每次可以进行一种操作,把S最后一个数字拿出来放在S的任意一个位置。
: 问通过这种操作把S转变为T的最少操作数。
: 例如
: 3 2 1
: 1 2 3
: ans:2
: 1 2 3 4 5
: 1 5 2 3 4
: ans:1

h**6
发帖数: 4160
9
第一个数列左起最多连续前x项是第二个数列的子序列,这x项可以保留,因此需要移动
n-x次。
p*****2
发帖数: 21240
10

复杂度什么样子的?

【在 h**6 的大作中提到】
: 第一个数列左起最多连续前x项是第二个数列的子序列,这x项可以保留,因此需要移动
: n-x次。

相关主题
CS intern面试经验也问一个median的问题
微软:求一个数列中最长单调上升子列,要求O(nlogn)时间[合集] 微软:求一个数列中最长单调上升子列,要求O(nlogn)时间
Goog面试挂了,回报一下本版G的面试题
进入JobHunting版参与讨论
p*****2
发帖数: 21240
11

复杂度如何呢?

【在 j********e 的大作中提到】
: 这个算法呢?
: 从左往右扫描S,对S的第一个数a,从T开始扫,直到T里面碰到a,记下T
: 里的位置Pa,那么至少需要(Pa-1)次操作。然后取S里的第二个数b,从
: T的Pa+1位置继续找b,找到位置Pb后,(Pb-2)是至少的操作数。如此继续,
: 直到T为空。
: int scan(int S[], int T[], int N) {
: int p = 0;
: int max = 0;
: if(!S || !T) return 0;
: for(int i=0; i
p*****2
发帖数: 21240
12

..
3 2 1
变为 1 3 2
变为 1 2 3
所以是两次

【在 C***U 的大作中提到】
: 为什么第一个例子答案是2
:
: 两个整数1-n的permutation, S和T每次可以进行一种操作,把S最后一个数字拿出来放
: 在S的任意一个位置。问通过这种操作把S转变为T的最少操作数。例如3 2 11 2 ......
: ..
: ★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

j********e
发帖数: 1192
13
O(N)吧,han6和我的好像是相同的算法

【在 p*****2 的大作中提到】
:
: ..
: 3 2 1
: 变为 1 3 2
: 变为 1 2 3
: 所以是两次

p*****2
发帖数: 21240
14

好像O(n), 我做一下。

【在 p*****2 的大作中提到】
:
: ..
: 3 2 1
: 变为 1 3 2
: 变为 1 2 3
: 所以是两次

p*****2
发帖数: 21240
15
膜拜两位大牛。是对的。
n=int(raw_input())
l1=map(int,raw_input().split())
l2=map(int,raw_input().split())
i=0
j=0
while j if l1[i]==l2[j]:
i+=1
j+=1
else:
j+=1
print n-i
w****x
发帖数: 2483
16

这个怎么证明啊

【在 h**6 的大作中提到】
: 第一个数列左起最多连续前x项是第二个数列的子序列,这x项可以保留,因此需要移动
: n-x次。

d**e
发帖数: 6098
17
周瑜同学仍然是那么令人佩服犹如滔滔江水连绵不绝,又如黄河泛滥一发而不可收拾

【在 h**6 的大作中提到】
: 第一个数列左起最多连续前x项是第二个数列的子序列,这x项可以保留,因此需要移动
: n-x次。

1 (共1页)
进入JobHunting版参与讨论
相关主题
(A) intern电面讨论一下careercup上的一道题,找周边全是1的最大子方阵
这题有沒有P解?CS intern面试经验
怎样理解ugly number II微软:求一个数列中最长单调上升子列,要求O(nlogn)时间
问一个面试问题Goog面试挂了,回报一下本版
求教一道最大公约数的题也问一个median的问题
哪里看leetcode上题的难度?[合集] 微软:求一个数列中最长单调上升子列,要求O(nlogn)时间
用了递归以后,怎么计算空间复杂度?G的面试题
关于找最大半径K子集的DP题的总结(更新非DP算法)对自己DFS能力彻底的绝望了。
相关话题的讨论汇总
话题: int话题: ans话题: 操作数话题: pa话题: 操作