Skip to content

Commit 24c5f61

Browse files
committed
New Problem Solution - "1700. Number of Students Unable to Eat Lunch"
1 parent 9894669 commit 24c5f61

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ LeetCode
107107
|1716|[Calculate Money in Leetcode Bank](https://leetcode.com/problems/calculate-money-in-leetcode-bank/) | [C++](./algorithms/cpp/calculateMoneyInLeetcodeBank/CalculateMoneyInLeetcodeBank.cpp)|Easy|
108108
|1711|[Count Good Meals](https://leetcode.com/problems/count-good-meals/) | [C++](./algorithms/cpp/countGoodMeals/CountGoodMeals.cpp)|Medium|
109109
|1710|[Maximum Units on a Truck](https://leetcode.com/problems/maximum-units-on-a-truck/) | [C++](./algorithms/cpp/maximumUnitsOnATruck/MaximumUnitsOnATruck.cpp)|Easy|
110+
|1700|[Number of Students Unable to Eat Lunch](https://leetcode.com/problems/number-of-students-unable-to-eat-lunch/) | [C++](./algorithms/cpp/numberOfStudentsUnableToEatLunch/NumberOfStudentsUnableToEatLunch.cpp)|Easy|
110111
|1695|[Maximum Erasure Value](https://leetcode.com/problems/maximum-erasure-value/) | [C++](./algorithms/cpp/maximumErasureValue/MaximumErasureValue.cpp)|Medium|
111112
|1694|[Reformat Phone Number](https://leetcode.com/problems/reformat-phone-number/) | [C++](./algorithms/cpp/reformatPhoneNumber/ReformatPhoneNumber.cpp)|Easy|
112113
|1625|[Lexicographically Smallest String After Applying Operations](https://leetcode.com/problems/lexicographically-smallest-string-after-applying-operations/) | [C++](./algorithms/cpp/lexicographicallySmallestStringAfterApplyingOperations/LexicographicallySmallestStringAfterApplyingOperations.cpp)|Medium|
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
// Source : https://leetcode.com/problems/number-of-students-unable-to-eat-lunch/
2+
// Author : Hao Chen
3+
// Date : 2021-05-10
4+
5+
/*****************************************************************************************************
6+
*
7+
* The school cafeteria offers circular and square sandwiches at lunch break, referred to by numbers 0
8+
* and 1 respectively. All students stand in a queue. Each student either prefers square or circular
9+
* sandwiches.
10+
*
11+
* The number of sandwiches in the cafeteria is equal to the number of students. The sandwiches are
12+
* placed in a stack. At each step:
13+
*
14+
* If the student at the front of the queue prefers the sandwich on the top of the stack, they
15+
* will take it and leave the queue.
16+
* Otherwise, they will leave it and go to the queue's end.
17+
*
18+
* This continues until none of the queue students want to take the top sandwich and are thus unable
19+
* to eat.
20+
*
21+
* You are given two integer arrays students and sandwiches where sandwiches[i] is the type of the
22+
* ith sandwich in the stack (i = 0 is the top of the stack) and students[j] is the preference of
23+
* the jth student in the initial queue (j = 0 is the front of the queue). Return the number of
24+
* students that are unable to eat.
25+
*
26+
* Example 1:
27+
*
28+
* Input: students = [1,1,0,0], sandwiches = [0,1,0,1]
29+
* Output: 0
30+
* Explanation:
31+
* - Front student leaves the top sandwich and returns to the end of the line making students =
32+
* [1,0,0,1].
33+
* - Front student leaves the top sandwich and returns to the end of the line making students =
34+
* [0,0,1,1].
35+
* - Front student takes the top sandwich and leaves the line making students = [0,1,1] and sandwiches
36+
* = [1,0,1].
37+
* - Front student leaves the top sandwich and returns to the end of the line making students =
38+
* [1,1,0].
39+
* - Front student takes the top sandwich and leaves the line making students = [1,0] and sandwiches =
40+
* [0,1].
41+
* - Front student leaves the top sandwich and returns to the end of the line making students = [0,1].
42+
* - Front student takes the top sandwich and leaves the line making students = [1] and sandwiches =
43+
* [1].
44+
* - Front student takes the top sandwich and leaves the line making students = [] and sandwiches = [].
45+
* Hence all students are able to eat.
46+
*
47+
* Example 2:
48+
*
49+
* Input: students = [1,1,1,0,0,1], sandwiches = [1,0,0,0,1,1]
50+
* Output: 3
51+
*
52+
* Constraints:
53+
*
54+
* 1 <= students.length, sandwiches.length <= 100
55+
* students.length == sandwiches.length
56+
* sandwiches[i] is 0 or 1.
57+
* students[i] is 0 or 1.
58+
******************************************************************************************************/
59+
60+
class Solution {
61+
public:
62+
int countStudents(vector<int>& students, vector<int>& sandwiches) {
63+
int st[2] = {0};
64+
for(auto s: students) {
65+
st[s]++;
66+
}
67+
int cnt = 0;
68+
for(auto& san : sandwiches){
69+
if (st[san] == 0) break;
70+
st[san]--;
71+
cnt++;
72+
}
73+
return students.size() - cnt;
74+
}
75+
};

0 commit comments

Comments
 (0)