一面感觉是亚裔二代,比较友善。
题目是给你公式,比如偶数的话除2,奇数的话就变成3*n+1,对于任何一个正数,数学猜想是最终他会变成1。每变一步步数加1,给一个上限,让找出范围内最长步数。
二次电面是一个南亚某国人,题做出来被黑,全程很冷淡。不过无所谓了,弯曲房价太高,本来就是练手。
题目是著名的给一个总金额,怎么选开胃菜,感觉就是硬币组合的变形。
一面感觉是亚裔二代,比较友善。
题目是给你公式,比如偶数的话除2,奇数的话就变成3*n+1,对于任何一个正数,数学猜想是最终他会变成1。每变一步步数加1,给一个上限,让找出范围内最长步数。
二次电面是一个南亚某国人,题做出来被黑,全程很冷淡。不过无所谓了,弯曲房价太高,本来就是练手。
题目是著名的给一个总金额,怎么选开胃菜,感觉就是硬币组合的变形。
lz能详细说下“每变一步步数加1,给一个上限,让找出范围内最长步数。“的意思么?谢谢!
有个思路是用个heap 放已经算好步数的数字
一个map 放 数字 =》 步数
先放 1 到一个heap
然后每次从heap顶端取出最小值 n, 那么2n , (n-1)/3 的需要的步数为 n需要步数+1。
存 2n , (n-1)/3 到map, 放 2*n , (n-1)/3 进入 heap (需要check map里是否已经存在)
循环的时候设置一个count,每次 2*n , (n-1)/3 小于上限的时候就 +1,count到达上限的时候结束loop
loop结束后从 map 里面 找到 1-上限的 最大值就可以了。
不过貌似还不是最优计算。 有人有更好的思路么?
第一题是这样的:比如7,变换到1是如下顺序:7->22->11->34->17->52->26->13->40->20->10->5->16->8->4->2->1, 总共需要17步。
楼主能讲一下第一题的思路吗,非常感谢!
楼主好,谢谢分享。
第一题不太理解题意,可不可以详细描述一下啊?是每个数都要收敛到1么?
奇数和偶数各执行不同的unique 操作,那给定一个数,步数岂不是固定的?
是。题目问给定一个上限,求这个上限内最大可能步数。不如给10,求1-10之间那个数需要变换步数最多。
楼主怎么被黑的?
感觉这个题没有很好的方法,除了可以用已知数转化的步数去设定未知数的转化步数,比如知道了2需要1步转化到1,那很容易知道4需要2步,8需要3步. 知道3需要7,那10 (3*3+1) 则为6步等等