腾讯笔试,把1到2*n分成两组的那道题怎么做啊?

如题#腾讯##笔试题目#
全部评论
分两组g1和g2。从头开始遍历着2n个数字,对于一个数i,我们考虑它可以放在哪组中。有以下两种情况: g1的长度不足n时,可直接把这个数加入g1 对于g2中的下一个位置g2LastIndex,如果abs(i - g1[index]) >= k,那么也可以把i加入g2 如此迭代即可。【但是这个代码只能对30%的样本,应该是哪里出了点疏漏,希望有大佬能指点一下】 let [n, k] = [5,2]; //测试数据 let group1 = []; let group2 = []; let result = 0; function process(g1, g2, currentNum) { console.log(g1, g2, currentNum) if (g1.length === n && g2.length === n) result++; else { if (g1.length < n) process(g1.concat(currentNum), g2, currentNum + 1); let g2LastIdx = g2.length ? g2.length : 0; if (Math.abs(currentNum - g1[g2LastIdx]) >= k) process(g1, g2.concat(currentNum), currentNum + 1) } } process(group1, group2, 1); print(result*2); //输出结果的2倍 //因为比如A={1,2},B={3,4} //那么A={3,4},B={1,2}也是合法的分组方式
点赞 回复 分享
发布于 2019-04-05 23:05
等一个大佬
点赞 回复 分享
发布于 2019-04-05 22:38
我也不会
点赞 回复 分享
发布于 2019-04-05 22:33

相关推荐

认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务