由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这两道leetcode题有更好的答案吗?
相关主题
A Question from leetcode, 求标准解法,本人解的太笨袅一道amazon题
请教 怎样存下这个string如何写内存速度最优化的string permutation?有重复字符
permuation sequence 超时Exposed上一道string permutation的题
大家能说说(leecode) Permutation Sequence这道题后的数学思路吗?一道题:number of permutation是 for a total score
算法:按照字典序求第k个排列数Given a string, find all its permutations without any repetition?
关于排列组合的题目的算法T家电面面经并且不解为何被秒拒
amazon onsite 面经leetcode里, backtracking的time complexity怎么算,比如permutations这题目
Non-recursive permutation关于排列组合的总结
相关话题的讨论汇总
话题: arr话题: xrange话题: given
进入JobHunting版参与讨论
1 (共1页)
f*********m
发帖数: 726
1
1. Permutation Sequence
The set [1,2,3,…,n] contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
我目前的做法是计算出所有的permuation sequence,然后输出第k个。大家有根好的方
法吗?
2. Permutations II
Given a collection of numbers that might contain duplicates, return all
possible unique permutations.
For example,
[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].
我用set 存permutation的结果,包括中间过程产生的permutation。有更好的方法吗?
谢谢
p*****2
发帖数: 21240
2

有。

【在 f*********m 的大作中提到】
: 1. Permutation Sequence
: The set [1,2,3,…,n] contains a total of n! unique permutations.
: By listing and labeling all of the permutations in order,
: We get the following sequence (ie, for n = 3):
: "123"
: "132"
: "213"
: "231"
: "312"
: "321"

f*********m
发帖数: 726
3
能说说思路么?谢谢。
p*****2
发帖数: 21240
4

等我有点时间写一下。

【在 f*********m 的大作中提到】
: 能说说思路么?谢谢。
p*****2
发帖数: 21240
5
第一题
f=[1]*10
for i in xrange(1,10):
f[i]=i*f[i-1]

def perf(n,k):
k-=1
ans=[]
v=[False]*n
for i in xrange(n-1,-1,-1):
d=k/f[i]+1
for c in xrange(n):
if not v[c]:
d-=1
if d==0:
break
ans.append(c+1)
v[c]=True
k%=f[i]

return ans
p*****2
发帖数: 21240
6
第二题
def dfs(arr,v,l):
ll=len(arr)
if(len(l)==ll):
print l
return
prev=-1
for i in xrange(ll):
if not v[i] and arr[i]!=prev:
v[i]=True
l.append(arr[i])
dfs(arr,v,l)
del l[-1]
v[i]=False
prev=arr[i]
arr=[1,1,2]
v=[False]*len(arr)
l=[]
dfs(arr,v,l)
H****r
发帖数: 2801
7
北京二哥这啥语言啊?偶写了个通俗C++递归版:
void Permute(string& result, int idx, string& nums, int fac, int n, int k) {
if(n==1) { result[idx]=nums[0]; return; }
result[idx] = nums[k/fac];
nums.erase(k/fac, 1);
Permute(result, idx+1, nums, fac/(n-1), n-1, k%fac);
}
string getPermutation(int n, int k) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int fac = 1;
for(int i=2; i string nums(n, '\0');
for(int i=0; i string result(n, '\0');
Permute(result, 0, nums, fac, n, k-1);
return result;
}

【在 p*****2 的大作中提到】
: 第一题
: f=[1]*10
: for i in xrange(1,10):
: f[i]=i*f[i-1]
:
: def perf(n,k):
: k-=1
: ans=[]
: v=[False]*n
: for i in xrange(n-1,-1,-1):

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

{
我用的Python

【在 H****r 的大作中提到】
: 北京二哥这啥语言啊?偶写了个通俗C++递归版:
: void Permute(string& result, int idx, string& nums, int fac, int n, int k) {
: if(n==1) { result[idx]=nums[0]; return; }
: result[idx] = nums[k/fac];
: nums.erase(k/fac, 1);
: Permute(result, idx+1, nums, fac/(n-1), n-1, k%fac);
: }
: string getPermutation(int n, int k) {
: // Start typing your C/C++ solution below
: // DO NOT write int main() function

f*********m
发帖数: 726
9
谢谢
f*********m
发帖数: 726
10
二哥“arr[i]!=prev”是怎么用的,什么意思?
这是个下面Permutations的区别,对吧?(下面的不要求unique permutations)
Permutations
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].

【在 p*****2 的大作中提到】
: 第二题
: def dfs(arr,v,l):
: ll=len(arr)
: if(len(l)==ll):
: print l
: return
: prev=-1
: for i in xrange(ll):
: if not v[i] and arr[i]!=prev:
: v[i]=True

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

主要是防止重复的。如果已经用过的数字就不能再用了。

【在 f*********m 的大作中提到】
: 二哥“arr[i]!=prev”是怎么用的,什么意思?
: 这是个下面Permutations的区别,对吧?(下面的不要求unique permutations)
: Permutations
: Given a collection of numbers, return all possible permutations.
: For example,
: [1,2,3] have the following permutations:
: [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].

1 (共1页)
进入JobHunting版参与讨论
相关主题
关于排列组合的总结算法:按照字典序求第k个排列数
MS Onsite关于排列组合的题目的算法
问一个题amazon onsite 面经
问一个题目Non-recursive permutation
A Question from leetcode, 求标准解法,本人解的太笨袅一道amazon题
请教 怎样存下这个string如何写内存速度最优化的string permutation?有重复字符
permuation sequence 超时Exposed上一道string permutation的题
大家能说说(leecode) Permutation Sequence这道题后的数学思路吗?一道题:number of permutation是 for a total score
相关话题的讨论汇总
话题: arr话题: xrange话题: given