由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 那个24 game given 4 number用= - × /的题
相关主题
问个snapchat的面经题dfs优化的题脸家电话面试面筋
这两道leetcode题有更好的答案吗?生成一个有重复数的全排列,怎么做比较好
A Question from leetcode, 求标准解法,本人解的太笨袅请教MapReduce怎么找median
String permunation question (CS)1小时前的G家onsite面经
问一个题目G电面面经
面经Google PhD Summer Intern 求host match
面试题,字母替换问题if "(i > cur &&nums[i] == nums[i-1]) continue;
求指点一个G家题问道面试题
相关话题的讨论汇总
话题: nums话题: numlist话题: int话题: return话题: index
进入JobHunting版参与讨论
1 (共1页)
a*******y
发帖数: 1040
1
贴youtubevideo的那哥们的coding太长了,估计不是interviewer要的,有没有
recursion可以做这个的?
p********s
发帖数: 37
2
写了个超级傻的,各种没效率,您别笑话囧
int pl(int a, int b) { return a + b; }
int mi(int a, int b) { return a - b; }
int ti(int a, int b) { return a * b; }
int di(int a, int b) { return (b && !(a % b)) ? (a / b) : -12345 ; }
int (*op[4])(int a, int b) = {&pl, &mi, &ti, &di};
const char *name[4] = {"+", "-", "*", "/"};
char result[128] = {0};
bool tryit(int nums[], char* res)
{
char result[128];
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++)
for(int k = 0; k < 4; k++)
if ((*op[k])((*op[j])((*op[i])(nums[0], nums[1]), nums[2]), nums[3]) == 24)
{
sprintf(res, "(((%d %s %d) %s %d) %s %d)\0", nums[0], name[i], nums[1],
name[j], nums[2], name[k], nums[3]);
return true;
}
else if ((*op[j])((*op[i])(nums[0], nums[1]), (*op[k])(nums[2], nums[3])) =
= 24) {
sprintf(res, "((%d %s %d) %s (%d %s %d)\0", nums[0], name[i], nums[1],
name[j], nums[2], name[k], nums[3]);
return true;
}
return false;
}
bool twentyFour(int nums[], char* res) {
sort(nums, nums + 4);
do {
if (tryit(nums, res))
return true;
}while(next_permutation(nums, nums + 4));
return false;
}
a*******y
发帖数: 1040
3
你这个主要是那个permutation函数把, 而且你没写出来,要是有permutation,还不
如弄成postfix来做
p********s
发帖数: 37
4
那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
Z*****Z
发帖数: 723
5
贴个python版的
def expressable0(numList, target, curr, index):

N = len(numList)
if(index == N):
return curr == target

if(expressable0(numList, target, curr + numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr - numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr * numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr // numList[index], index + 1)):
return True
return False
def expressable(numList, target):
return expressable0(numList, target, numList[0], 1)
if __name__ == '__main__':
numList = [2, 2, 3, 2]
target = 24

print(expressable(numList, target))

【在 p********s 的大作中提到】
: 那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
a*******y
发帖数: 1040
6
我知道那个是STL的,关键这个是这道题的关键,你用STL来实现了

【在 p********s 的大作中提到】
: 那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
a*******y
发帖数: 1040
7
贴youtubevideo的那哥们的coding太长了,估计不是interviewer要的,有没有
recursion可以做这个的?
p********s
发帖数: 37
8
写了个超级傻的,各种没效率,您别笑话囧
int pl(int a, int b) { return a + b; }
int mi(int a, int b) { return a - b; }
int ti(int a, int b) { return a * b; }
int di(int a, int b) { return (b && !(a % b)) ? (a / b) : -12345 ; }
int (*op[4])(int a, int b) = {&pl, &mi, &ti, &di};
const char *name[4] = {"+", "-", "*", "/"};
char result[128] = {0};
bool tryit(int nums[], char* res)
{
char result[128];
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++)
for(int k = 0; k < 4; k++)
if ((*op[k])((*op[j])((*op[i])(nums[0], nums[1]), nums[2]), nums[3]) == 24)
{
sprintf(res, "(((%d %s %d) %s %d) %s %d)\0", nums[0], name[i], nums[1],
name[j], nums[2], name[k], nums[3]);
return true;
}
else if ((*op[j])((*op[i])(nums[0], nums[1]), (*op[k])(nums[2], nums[3])) =
= 24) {
sprintf(res, "((%d %s %d) %s (%d %s %d)\0", nums[0], name[i], nums[1],
name[j], nums[2], name[k], nums[3]);
return true;
}
return false;
}
bool twentyFour(int nums[], char* res) {
sort(nums, nums + 4);
do {
if (tryit(nums, res))
return true;
}while(next_permutation(nums, nums + 4));
return false;
}
a*******y
发帖数: 1040
9
你这个主要是那个permutation函数把, 而且你没写出来,要是有permutation,还不
如弄成postfix来做
p********s
发帖数: 37
10
那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
Z*****Z
发帖数: 723
11
贴个python版的
def expressable0(numList, target, curr, index):

N = len(numList)
if(index == N):
return curr == target

if(expressable0(numList, target, curr + numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr - numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr * numList[index], index + 1)):
return True
elif(expressable0(numList, target, curr // numList[index], index + 1)):
return True
return False
def expressable(numList, target):
return expressable0(numList, target, numList[0], 1)
if __name__ == '__main__':
numList = [2, 2, 3, 2]
target = 24

print(expressable(numList, target))

【在 p********s 的大作中提到】
: 那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
a*******y
发帖数: 1040
12
我知道那个是STL的,关键这个是这道题的关键,你用STL来实现了

【在 p********s 的大作中提到】
: 那个是stl的alrorithm库里的函数,http://www.cplusplus.com/reference/algorithm/next_permutation/,面试真不让stl用咱也没办法呀
a**********e
发帖数: 157
13
是不是没考虑 (a+b+c)/d ?

【在 p********s 的大作中提到】
: 写了个超级傻的,各种没效率,您别笑话囧
: int pl(int a, int b) { return a + b; }
: int mi(int a, int b) { return a - b; }
: int ti(int a, int b) { return a * b; }
: int di(int a, int b) { return (b && !(a % b)) ? (a / b) : -12345 ; }
: int (*op[4])(int a, int b) = {&pl, &mi, &ti, &di};
: const char *name[4] = {"+", "-", "*", "/"};
: char result[128] = {0};
: bool tryit(int nums[], char* res)
: {

a**********e
发帖数: 157
14
a few cases like a/(b+c+d) seem missing, e.g. {72,1,1,1}

【在 p********s 的大作中提到】
: 写了个超级傻的,各种没效率,您别笑话囧
: int pl(int a, int b) { return a + b; }
: int mi(int a, int b) { return a - b; }
: int ti(int a, int b) { return a * b; }
: int di(int a, int b) { return (b && !(a % b)) ? (a / b) : -12345 ; }
: int (*op[4])(int a, int b) = {&pl, &mi, &ti, &di};
: const char *name[4] = {"+", "-", "*", "/"};
: char result[128] = {0};
: bool tryit(int nums[], char* res)
: {

1 (共1页)
进入JobHunting版参与讨论
相关主题
问道面试题问一个题目
面了几家电面,发现Backtracking考到的概率真高面经
一道题,我觉得挺难面试题,字母替换问题
请教一道Leetcode 题求指点一个G家题
问个snapchat的面经题dfs优化的题脸家电话面试面筋
这两道leetcode题有更好的答案吗?生成一个有重复数的全排列,怎么做比较好
A Question from leetcode, 求标准解法,本人解的太笨袅请教MapReduce怎么找median
String permunation question (CS)1小时前的G家onsite面经
相关话题的讨论汇总
话题: nums话题: numlist话题: int话题: return话题: index