本文主要是介绍每日一题——LeetCode1700.无法吃午餐的学生的数量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法一 模拟 队列循环
对于students[0]和sandwiches[0],如果它们相同就从两个数组中都删除第一个元素,进行下一次比较,如果他们不同,则把student第一个元素移到最后面去,再次进行比较,知道sandwiches[0]已经不存在在students数组里就可以结束循环,最后students数组的长度就是输出值。
var countStudents = function(students, sandwiches) {while(students.indexOf(sandwiches[0])!=-1){if(students[0]===sandwiches[0]){students.shift()sandwiches.shift()}else{students.push(students.shift())}}return students.length
};
消耗时间和内存情况:
方法二 还是模拟
用s0记录students里0的数量,s1记录1的数量,碰到sandwiches[0]==0则s0-1,sandwiches[0]==1则s1-1,最后s0和s1的和就是剩下的学生数量
var countStudents = function(students, sandwiches) {let s1 = _.sum(students);let s0 = students.length - s1;for (let i = 0; i < sandwiches.length; i++) {if (sandwiches[i] === 0 && s0 > 0) {s0--;} else if (sandwiches[i] === 1 && s1 > 0) {s1--;} else {break;}}return s0 + s1;
};
消耗时间和内存情况:
这篇关于每日一题——LeetCode1700.无法吃午餐的学生的数量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!