当前位置:   article > 正文

LeetCode——1700.无法吃午餐的学生数量_无法吃午餐学生数量

无法吃午餐学生数量

通过万岁!!!

  • 题目:给你一个数组,表示学生,学生只有0和1表示爱吃的三明治类型,然后还有一个三明治类型的数组。首先题目保证了都可以学生数量和三明治数量是相同的。但是三明治的类型跟学生想吃的类型并不一定完全相同。吃三明治有一个规则,就是如果这个不是这个学生想吃的,那么这个学生就去最后。如果是,则拿走三明治即可。然后问一下最后有多少学生吃不上。
  • 思路:我是用的模拟去做的,首先我们算一下两种三明治的学生数量。如果三明治要发1,而没有人要吃1了,那么就表示下面的人都吃不上了。相反如果要发0,但是没有人要吃0了,也结束了。然后有一个while循环。而且这里定义了一个数组。其实我是从学生数组和三明治数组进行的研究,相反,如果我们只对三明治进行研究,则相对简单一点。
  • 技巧:数组遍历

java代码——写法一

class Solution {    public int countStudents(int[] students, int[] sandwiches) {        int len = students.length;        int oneSum = Arrays.stream(students).sum();        int zeroSum = len - oneSum;        int sanIdx = 0;        int stuIdx = 0;        boolean[] vis = new boolean[len];        while (true) {            if (sandwiches[sanIdx] == 1 && oneSum == 0) {                return zeroSum;            }            if (sandwiches[sanIdx] == 0 && zeroSum == 0) {                return oneSum;            }            if (!vis[stuIdx % len] && sandwiches[sanIdx] == students[stuIdx % len]) {                vis[stuIdx % len] = true;                if (sandwiches[sanIdx] == 0) {                    zeroSum--;                } else {                    oneSum--;                }                sanIdx++;            }            stuIdx++;            if (zeroSum == 0 && oneSum == 0) {                return 0;            }        }    }}
  • 1

java代码——写法2

class Solution {
    public int countStudents(int[] students, int[] sandwiches) {
        int oneSum = Arrays.stream(students).sum();
        int zeroSum = students.length - oneSum;
        for (int i = 0; i < sandwiches.length; i++) {
            if (sandwiches[i] == 0 && zeroSum > 0) {// 有人吃
                zeroSum--;
            } else if (sandwiches[i] == 1 && oneSum > 0) {
                oneSum--;
            } else {// 没人吃
                break;
            }
        }
        return oneSum + zeroSum;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 总结:题目不是特别难。第一种写法就是考虑了一些不需要考虑的东西,其实主要是我循环的时候,找错了对象。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/137360
推荐阅读
相关标签
  

闽ICP备14008679号