2017去哪儿笔试题
1、住酒店的问题
我用JS实现的,当时做的时候没有编译通过,下来自己又修改的
function countDay(arr) { var money=arr[arr.length-1]; var count=0; var arrSort=arr.slice(0,arr.length-1).sort(function(a,b){return b-a;});//降序排列 var max=arrSort[0]; var min=arrSort[arrSort.length-1]; if(min>money) {count=-1;}//如果最便宜的酒店都大于总钱数,则返回-1; if(money%max==0) { count=parseInt(money/max); }//如果总钱数除以最贵的能除尽,则返回的最少天数,即住最贵的酒店的天数最少 if (money % max != 0) { count += parseInt(money / max); money = parseInt(money % max); arrSort.splice(0, 1); max = arrSort[0];//每次删除降序排的数组的最大的 count += parseInt(money / max); } return count; }
测试结果:
alert(countDay([1001,1222,1002,1000]));//-1 alert(countDay([387,2,611,1000]));//应该返回3 结果返回2 有待改进。。。。。。 alert(countDay([1,2,1002,1000]));//500 alert(countDay([1000,200,800,1000]));//1 alert(countDay([10,200,800,1000]));//2