Skip to content

Commit

Permalink
New Problem Solution - "1700. Number of Students Unable to Eat Lunch"
Browse files Browse the repository at this point in the history
  • Loading branch information
haoel committed May 10, 2021
1 parent 9894669 commit 24c5f61
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ LeetCode
|1716|[Calculate Money in Leetcode Bank](https://leetcode.com/problems/calculate-money-in-leetcode-bank/) | [C++](./algorithms/cpp/calculateMoneyInLeetcodeBank/CalculateMoneyInLeetcodeBank.cpp)|Easy|
|1711|[Count Good Meals](https://leetcode.com/problems/count-good-meals/) | [C++](./algorithms/cpp/countGoodMeals/CountGoodMeals.cpp)|Medium|
|1710|[Maximum Units on a Truck](https://leetcode.com/problems/maximum-units-on-a-truck/) | [C++](./algorithms/cpp/maximumUnitsOnATruck/MaximumUnitsOnATruck.cpp)|Easy|
|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|
|1695|[Maximum Erasure Value](https://leetcode.com/problems/maximum-erasure-value/) | [C++](./algorithms/cpp/maximumErasureValue/MaximumErasureValue.cpp)|Medium|
|1694|[Reformat Phone Number](https://leetcode.com/problems/reformat-phone-number/) | [C++](./algorithms/cpp/reformatPhoneNumber/ReformatPhoneNumber.cpp)|Easy|
|1625|[Lexicographically Smallest String After Applying Operations](https://leetcode.com/problems/lexicographically-smallest-string-after-applying-operations/) | [C++](./algorithms/cpp/lexicographicallySmallestStringAfterApplyingOperations/LexicographicallySmallestStringAfterApplyingOperations.cpp)|Medium|
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Source : https://leetcode.com/problems/number-of-students-unable-to-eat-lunch/
// Author : Hao Chen
// Date : 2021-05-10

/*****************************************************************************************************
*
* The school cafeteria offers circular and square sandwiches at lunch break, referred to by numbers 0
* and 1 respectively. All students stand in a queue. Each student either prefers square or circular
* sandwiches.
*
* The number of sandwiches in the cafeteria is equal to the number of students. The sandwiches are
* placed in a stack. At each step:
*
* If the student at the front of the queue prefers the sandwich on the top of the stack, they
* will take it and leave the queue.
* Otherwise, they will leave it and go to the queue's end.
*
* This continues until none of the queue students want to take the top sandwich and are thus unable
* to eat.
*
* You are given two integer arrays students and sandwiches where sandwiches[i] is the type of the
* ith sandwich in the stack (i = 0 is the top of the stack) and students[j] is the preference of
* the jth student in the initial queue (j = 0 is the front of the queue). Return the number of
* students that are unable to eat.
*
* Example 1:
*
* Input: students = [1,1,0,0], sandwiches = [0,1,0,1]
* Output: 0
* Explanation:
* - Front student leaves the top sandwich and returns to the end of the line making students =
* [1,0,0,1].
* - Front student leaves the top sandwich and returns to the end of the line making students =
* [0,0,1,1].
* - Front student takes the top sandwich and leaves the line making students = [0,1,1] and sandwiches
* = [1,0,1].
* - Front student leaves the top sandwich and returns to the end of the line making students =
* [1,1,0].
* - Front student takes the top sandwich and leaves the line making students = [1,0] and sandwiches =
* [0,1].
* - Front student leaves the top sandwich and returns to the end of the line making students = [0,1].
* - Front student takes the top sandwich and leaves the line making students = [1] and sandwiches =
* [1].
* - Front student takes the top sandwich and leaves the line making students = [] and sandwiches = [].
* Hence all students are able to eat.
*
* Example 2:
*
* Input: students = [1,1,1,0,0,1], sandwiches = [1,0,0,0,1,1]
* Output: 3
*
* Constraints:
*
* 1 <= students.length, sandwiches.length <= 100
* students.length == sandwiches.length
* sandwiches[i] is 0 or 1.
* students[i] is 0 or 1.
******************************************************************************************************/

class Solution {
public:
int countStudents(vector<int>& students, vector<int>& sandwiches) {
int st[2] = {0};
for(auto s: students) {
st[s]++;
}
int cnt = 0;
for(auto& san : sandwiches){
if (st[san] == 0) break;
st[san]--;
cnt++;
}
return students.size() - cnt;
}
};

0 comments on commit 24c5f61

Please sign in to comment.