遇到一个随机数面试题,目测无最优解

小湿哥 小湿哥 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
偶然看到群里别人发的一条面试题


生成随机数 (由0~9的阿拉伯数字组成的,长度是6~15个字符)
要求
1. 不能出现连续3个以上相同的数字(11234,2333456 是不允许的)
2. 不能出现3个连号的情况( 123456, 123457, 2567891)
3. 生成的字符串不能是等差数列
4. 要求算法高效,少占内存。


我是没什么好办法。大概三步走

第一步
生成随机数
一次生成64位的数,再做随机长度分割。

第二步
每个字符串从头到尾遍历,检查是否有三个连续数字一致,同时也检查是否有连续3个连号。
若有则该数失败。

第三步
依次遍历,判断等差数列

抛转引玉,有没有更高效的办法来解这个题?!
...全文
评论 10
收藏 已收藏
分享
返回顶部
小湿哥
其它技术问题 3,881 成员 9,044 内容