一个随机排布的面试题(洗牌算法?)

本文介绍了在面试中遇到的一道题目,要求对1到62的学号进行随机排列,确保相邻的学号不相邻。通过遍历和递归的方法来解决这个问题,采用从头尾插入的策略防止最后出现61和62相邻的情况。代码实现中可能存在调用上的复杂性,但逻辑上应无误。
摘要由CSDN通过智能技术生成

去某公司面试遇到一个这样的题:“班里有62个学生,学号分别为1-62,新学期随机排座位,要求学号相邻的不能坐在一起”
个人解读:一个数组有1-62个数字,要求随机排序,数字相邻的不能挨在一起。

肯定是遍历啊,遍历一遍可能不会安排完数组里所有的值,所以需要递归调用。为了避免安排完最后剩下两个数61,62所以采取从头尾两次插入的方法。

        var  arr =new Array(62).fill(0).map((_,k)=>k+1);

        function randomSort(arr,target){
            if(!Array.isArray(arr) || arr.length==0) return target;
            for(var i=arr.length;i>0;i--){
                var index = Math.floor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值