由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 贴几道某大公司的面试题
相关主题
[合集] 贴几道某大公司的面试题求助一道 Longest Common Substring 的变形面试题
问一个老的google面试题已经用了dp,我的wildcard怎么还是过不了大oj
拿到offer,分享之前的一些onsite面试wildcard matching 大case runtime error
请教一个字符串比较排序的问题 (转载)星期一福利:某公司店面题
刚做了一道题挺有意思text justification 有人ac吗
longest common prefix 和 longest common substring请问大牛们Leetcode Palindrome Number 这道题(思路很简单,就是程序写不对)
发个Twitter的面试题一变态题
问大牛们一个Leetcode上的题隔壁讨论FB变态面试官,请教一下leetcode 301题怎么解最优?
相关话题的讨论汇总
话题: 160话题: int话题: factorial话题: num话题: tring
进入JobHunting版参与讨论
1 (共1页)
r*****n
发帖数: 120
1
1.请书写一个程序,将整型变量 x 中数字左右翻转后存到另外一个整型变量 y中,例如 x = 12345 时,y为 54321,x = ‐123 时,y为‐321。其中 x 的个位不为 0。 
     void reverse (int x, int* y); 
(1) 请实现该函数,以上函数原型是用 C语言写的,你可以用你熟悉的语言; 
(2) 请写出一段代码验证该函数在各种情况下的正确性。 
 
2.对集合{1, 2, 3, …, n}中的数进行全排列,可以得到 n!个不同的排列方式。现在我们用字母序把它们列出来,并一一标上序号,如当 n=3 时:
     0.123 
     1.132 
     2.213
m**q
发帖数: 189
2
第2题,可以调用next_permuation() k次,复杂度为O(k)
或者用二分法逐个判断每个位置上应该放的字母,复杂度应该
不超过O(lgk)
g**********y
发帖数: 14569
3
递归,复杂度O(strlen).
private String find(String input, int k) {
int N = input.length();
if (N == 1) return input;
int i = k/P[N-1];
int j = k%P[N-1];
return input.charAt(i) + find(input.substring(0, i) + input.substring(i+1), j);
}

【在 m**q 的大作中提到】
: 第2题,可以调用next_permuation() k次,复杂度为O(k)
: 或者用二分法逐个判断每个位置上应该放的字母,复杂度应该
: 不超过O(lgk)

z*******y
发帖数: 578
4
第二题 我的思路,欢迎大家批评指正,这个方法复杂度是permatation string 长度的平方:
以 N = 5 K=11 为例
1 2 3 4 5
建一个数组 Boolean B[N] 用来标记元素是否已经使用过,初始值为false
建一个数组 Factorial[N] 存阶乘 from 1!~(N-1)!
然后逐位确定数值 对于第i位 (1<=i<=5),使用如下方法确定该位置上的数字:
if (K/Factorial(N-i) == 0)
此时第一个未被使用的数字即应该为i位上的数字

else
int count = K/Factorial(N-i);
此时应该是第(count+1) 个未被使用的数字即应该为i位上的数字
K=K%Factorial(N-i)
z*******y
发帖数: 578
5
另外附上java 写的code
写code的时候发现上面两种情况其实是一种情况
private static void calculatePermutation(int N, int k) {
StringBuilder str = new StringBuilder();
boolean B[] = new boolean[N];
for (int i = 0; i < N; i++) {
int f = factorial(N - i - 1);
int num = k / f + 1;
for (int j = 0; j < N; j++) {
if (B[j] == false) {
num--;
if (num == 0) {
str.append(j + 1);
B[j] = true;
break;
}
}
}
k = k % f;
}
System.out.println(str);
}
h**********d
发帖数: 4313
6
看不懂。。大牛再指点下吧
P[N-1]是什么

substring(i+1), j);

【在 g**********y 的大作中提到】
: 递归,复杂度O(strlen).
: private String find(String input, int k) {
: int N = input.length();
: if (N == 1) return input;
: int i = k/P[N-1];
: int j = k%P[N-1];
: return input.charAt(i) + find(input.substring(0, i) + input.substring(i+1), j);
: }

g**********y
发帖数: 14569
7
P[N-1] = (N-1)!

【在 h**********d 的大作中提到】
: 看不懂。。大牛再指点下吧
: P[N-1]是什么
:
: substring(i+1), j);

s*****y
发帖数: 897
8
Not familiar java, but have question on this:
why
return input.charAt(i) + find(input.substring(0, i) + input.subs
tring(i+1), j);
but not
return input.charAt(i) + find(input.substring(0, i-1) + input.subs
tring(i+1), j);

substring(i+1), j);

【在 g**********y 的大作中提到】
: 递归,复杂度O(strlen).
: private String find(String input, int k) {
: int N = input.length();
: if (N == 1) return input;
: int i = k/P[N-1];
: int j = k%P[N-1];
: return input.charAt(i) + find(input.substring(0, i) + input.substring(i+1), j);
: }

h**********d
发帖数: 4313
9


的平方:

【在 z*******y 的大作中提到】
: 第二题 我的思路,欢迎大家批评指正,这个方法复杂度是permatation string 长度的平方:
: 以 N = 5 K=11 为例
: 1 2 3 4 5
: 建一个数组 Boolean B[N] 用来标记元素是否已经使用过,初始值为false
: 建一个数组 Factorial[N] 存阶乘 from 1!~(N-1)!
: 然后逐位确定数值 对于第i位 (1<=i<=5),使用如下方法确定该位置上的数字:
: if (K/Factorial(N-i) == 0)
: 此时第一个未被使用的数字即应该为i位上的数字
:
: else

h**********d
发帖数: 4313
10
貌似后面那个参数是1-based index, not 0-based

【在 s*****y 的大作中提到】
: Not familiar java, but have question on this:
: why
: return input.charAt(i) + find(input.substring(0, i) + input.subs
: tring(i+1), j);
: but not
: return input.charAt(i) + find(input.substring(0, i-1) + input.subs
: tring(i+1), j);
:
: substring(i+1), j);

g**********y
发帖数: 14569
11
Java的substring(begin, end), 不包括end.

【在 s*****y 的大作中提到】
: Not familiar java, but have question on this:
: why
: return input.charAt(i) + find(input.substring(0, i) + input.subs
: tring(i+1), j);
: but not
: return input.charAt(i) + find(input.substring(0, i-1) + input.subs
: tring(i+1), j);
:
: substring(i+1), j);

s*****y
发帖数: 897
12
Thanks.

【在 g**********y 的大作中提到】
: Java的substring(begin, end), 不包括end.
1 (共1页)
进入JobHunting版参与讨论
相关主题
隔壁讨论FB变态面试官,请教一下leetcode 301题怎么解最优?刚做了一道题挺有意思
写了一下leetcode上Valid Number,用boolean表示一些状态是不是比较简单longest common prefix 和 longest common substring
G家电面,这回肯定挂了。附面经。发个Twitter的面试题
我觉得valid number其实并不难问大牛们一个Leetcode上的题
[合集] 贴几道某大公司的面试题求助一道 Longest Common Substring 的变形面试题
问一个老的google面试题已经用了dp,我的wildcard怎么还是过不了大oj
拿到offer,分享之前的一些onsite面试wildcard matching 大case runtime error
请教一个字符串比较排序的问题 (转载)星期一福利:某公司店面题
相关话题的讨论汇总
话题: 160话题: int话题: factorial话题: num话题: tring