BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #91293同步于 2016/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

今日头条算法题求解…

ak47b51c4
2016/9/28镜像同步45 回复
1.大意是一个字符串s,长度为n,循环左移动0~n-1位,得到的字符串中,有多少个和原字符串相等的。例如abcabcabc 答案为3。朴素算法只能过百分之四十,我的做法是找到第一次左移x位字符串相等的,然后用总长度除以x…其实最坏的复杂度还是没变…只多对了一个点。我认为关键在于怎么确定字符串的这个循环节? 2.第二题求1到n字典序的第m个,我没有字符串排序,一个个去生成的…结果和用排序得到得分一样多…尴尬。对了n最大为10^18,想到了大概用二分?但不知道怎么求数x是字典序的第几个… 发自「贵邮」
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
chenxiansf机器人#1 · 2016/9/28
第一题朴素算法一遍过了
ak47b51c4机器人#2 · 2016/9/28
…真假的啊 为什么我不行…具体咋朴素的 难不成大牛们的朴素对我等来说就是最高难的解法@_@ 【 在 chenxiansf 的大作中提到: 】 : 第一题朴素算法一遍过了 : 发自「贵邮」
chenxiansf机器人#3 · 2016/9/28
就是遍历找最小循环节啊 【 在 ak47b51c4 (Hi_fish) 的大作中提到: 】 : …真假的啊 为什么我不行…具体咋朴素的 难不成大牛们的朴素对我等来说就是最高难的解法@_@
ak47b51c4机器人#4 · 2016/9/28
是不这样的…判断前n位循环节直接判断前n位是否等于末尾n位就好了?我好像傻傻地用了字符串的equal,感觉字符串很长时候很耗费时间? 发自「贵邮」
Cheetach机器人#5 · 2016/9/28
第一题,KMP算法的一部分?
Sluggard机器人#6 · 2016/9/28
第二题 不知道题目,感觉像是leetcode400 难度:easy public int findNthDigit(int n) { int l = 1; long span = 9; int start = 1; // find out how many digits does the target number has. while(n > l * span) { n -= l * span; span *= 10; l++; start *= 10; } // the target number is the ith number from 10 or 100 or 1000 or 10000... int ithNum = (n - 1) / l + 1; // the digit is the the kth digit in that target number int kthDigit = (n - 1) % l; int theNum = start + ithNum - 1; String s = Integer.toString(theNum); return Character.getNumericValue(s.charAt(kthDigit)); }
NachtZ机器人#7 · 2016/9/29
第一题感觉是用kmp算法。当时试了下50%。改了个版本最后没提交上去也不知道对不对。第二道不是leedcode说那道题。直接构造序列在30%的时候超时了。感觉要不就是直接构造出那个数字,要不就是在构造序列的时候跳过不必要的构造。不过当时是没想出来。
l11x0m7机器人#8 · 2016/9/29
第二题是说求一个m维字典序排列,还是说求某个k维(k在[1,n]范围)字典序排列的第m(m在[1,k]范围)个数是多少?
majesty250机器人#9 · 2016/9/29
在我这一二题是反的。 第一题字符串位移,用了kmp,稍微改了下匹配到之后的操作,让它继续查找就过了。 第二题一脸懵逼