算法面试 人工智能 springcloud

笔者很喜欢研究算法逻辑之类的问题,有时候会记录下面试官的一些有趣的问题,下面介绍一个在某科技面试的一道有趣的题目,以及巧妙的解决方案,仅仅提供参考,如果有更好的方案,请留言回复
1.某科技面试高级java软件开发工程师,问道我一个场景的问题,大致的场景是,一个停车库,需要随机的分配一个从1到999的号码给车辆作为登记信息,但是需要随机分配这个数组,而且不能重复。
这就是大概的场景应用的算法题,可以使用伪代码来实现,当时笔者是使用了,list以及random来结合推算出最后的结果,但是感觉面试官并不是特别满意,我的思路是,先初始化一个有序的arrayList来存放1到999个数字,然后通过乱序,随机的的从这个list里面获取数字,每次获取都删除掉一个,循环一直获取到不为null的元素为止。
这样的话就有问题了,如果一直都不命中,就会一直循环,这种方案可以想象是行不通的。
后来看了 redis资料 发现redis还有一个非常精妙的方案处理这种场景的问题 就是 spop命令来处理,他还有一个同类型的命令 srandmenber ,不同的是spop是随机弹出数组里面的元素,而srandmember是随机显示数组里面的元素,可以重复的显示。这样使用redis是这个就可以完美的解决了这种场景的问题了,如果读者有更好的方案请提出。
2.某科技面试java软件开发工程师,场景问题,如果一桌人围在一起有n个人(n>5)每个人都序号,分别从1到n,然后从这n个里面出列第2个以及第4个,然后剩下的人在围在一起,依次的执行这个出列方式,凡是顺数第2个以及第4个出列,最后不满足出列的人数时,就显示最后剩下的人的序号。
这个场景,使用的同样是arrayList来记录然后弹出对应顺序的号码出来,把剩下的号码拿出,这个实现其实不复杂。

猜你喜欢

转载自blog.csdn.net/weixin_30947631/article/details/85096651