diff --git a/README.md b/README.md index bdc49f7..3683bc7 100644 --- a/README.md +++ b/README.md @@ -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| diff --git a/algorithms/cpp/numberOfStudentsUnableToEatLunch/NumberOfStudentsUnableToEatLunch.cpp b/algorithms/cpp/numberOfStudentsUnableToEatLunch/NumberOfStudentsUnableToEatLunch.cpp new file mode 100644 index 0000000..198aa43 --- /dev/null +++ b/algorithms/cpp/numberOfStudentsUnableToEatLunch/NumberOfStudentsUnableToEatLunch.cpp @@ -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& students, vector& 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; + } +};