| leetcodeSolution to some Leetcode problems written in C++ | 
| git clone git://git.dimitrijedobrota.com/leetcode.git | 
| Log | Files | Refs | README | LICENSE | 
| commit | 2018fb87bfa7dbb80a368653cd87cb2ee0f881bd | 
| parent | cf327982d05967334ca414492d16b3e4ec7ea9f2 | 
| author | Dimitrije Dobrota < mail@dimitrijedobrota.com > | 
| date | Fri, 24 Nov 2023 20:57:18 +0000 | 
6 Random Problems
| A | Problems/1366.cpp | | | +++++++++++++++++++++++++ | 
| A | Problems/1545.cpp | | | +++++++++++++++ | 
| A | Problems/1653.cpp | | | ++++++++++++++++++++ | 
| A | Problems/2385.cpp | | | +++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
| A | Problems/2673.cpp | | | ++++++++++++ | 
| A | Problems/2679.cpp | | | ++++++++++++++++ | 
| M | README.md | | | ++++++ | 
7 files changed, 147 insertions(+), 0 deletions(-)
diff --git a/ Problems/1366.cpp b/ Problems/1366.cpp
@@ -0,0 +1,25 @@
class Solution {
            public:
              string rankTeams(const vector<string> &votes) const {
                  static int count[27][27];
                  memset(count, 0x00, sizeof(count));
                  const int n = votes.size(), m = votes[0].size();
                  for (const auto &vote : votes) {
                      for (int i = 0; i < m; i++) {
                          count[vote[i] & 0x1F][i]++;
                      }
                  }
                  string s = votes[0];
                  sort(s.begin(), s.end(), [&](char a, char b) {
                      const int i = a & 0x1F, j = b & 0x1F;
                      for (int k = 0; k < m; k++) {
                          if (count[i][k] == count[j][k]) continue;
                          return count[i][k] > count[j][k];
                      }
                      return a < b;
                  });
                  return s;
              }
          };
        
        diff --git a/ Problems/1545.cpp b/ Problems/1545.cpp
@@ -0,0 +1,15 @@
class Solution {
            public:
              char findKthBit(int n, int k) const {
                  int flip = 0, l = (1 << n) - 1;
                  while (k > 1) {
                      if (k == l / 2 + 1) return '1' - flip;
                      if (k > l / 2) {
                          k = l + 1 - k;
                          flip = !flip;
                      }
                      l /= 2;
                  }
                  return '0' + flip;
              }
          };
        
        diff --git a/ Problems/1653.cpp b/ Problems/1653.cpp
@@ -0,0 +1,20 @@
class Solution {
            public:
              int minimumDeletions(const string &s) const {
                  static int acount[100001];
                  const int n = s.size();
                  acount[n] = 0;
                  for (int i = n - 1; i >= 0; i--) {
                      acount[i] = acount[i + 1] + (s[i] == 'a');
                  }
                  int acnt = 0, bcnt = 0, res = acount[0];
                  for (int i = 0; i < n; i++) {
                      s[i] == 'a' ? acnt++ : bcnt++;
                      res = min(res, bcnt + acount[i] - 1);
                  }
                  return res;
              }
          };
        
        diff --git a/ Problems/2385.cpp b/ Problems/2385.cpp
@@ -0,0 +1,53 @@
class Solution {
            public:
              int amountOfTime(TreeNode *root, int start) const {
                  unordered_map<TreeNode *, TreeNode *> parent;
                  queue<TreeNode *> q;
                  TreeNode *infected;
                  q.push(root);
                  while (!q.empty()) {
                      TreeNode *root = q.front();
                      q.pop();
                      if (root->val == start) {
                          infected = root;
                          break;
                      }
                      if (root->left) {
                          parent.insert({root->left, root});
                          q.push(root->left);
                      }
                      if (root->right) {
                          parent.insert({root->right, root});
                          q.push(root->right);
                      }
                  }
                  int depth = -1;
                  q = queue<TreeNode *>();
                  q.push(infected);
                  while (!q.empty()) {
                      depth++;
                      for (int k = q.size(); k > 0; k--) {
                          TreeNode *root = q.front();
                          q.pop();
                          if (parent.count(root)) {
                              TreeNode *prnt = parent[root];
                              (prnt->left == root ? prnt->left : prnt->right) = nullptr;
                              q.push(parent[root]);
                          }
                          if (root->left) {
                              q.push(root->left);
                              parent.erase(root->left);
                          }
                          if (root->right) {
                              q.push(root->right);
                              parent.erase(root->right);
                          }
                      }
                  }
                  return depth;
              }
          };
        
        diff --git a/ Problems/2673.cpp b/ Problems/2673.cpp
@@ -0,0 +1,12 @@
class Solution {
            public:
              int minIncrements(int n, vector<int> &cost) const {
                  int res = 0;
                  for (int i = n / 2 - 1; i >= 0; i--) {
                      const int next = i << 1;
                      res += abs(cost[next + 1] - cost[next + 2]);
                      cost[i] += max(cost[next + 1], cost[next + 2]);
                  }
                  return res;
              }
          };
        
        diff --git a/ Problems/2679.cpp b/ Problems/2679.cpp
@@ -0,0 +1,16 @@
class Solution {
            public:
              int matrixSum(const vector<vector<int>> &nums) const {
                  static int maxi[501];
                  memset(maxi, 0x00, sizeof(maxi));
                  const int m = nums[0].size();
                  for (auto row : nums) {
                      sort(row.begin(), row.end());
                      for (int i = 0; i < m; i++)
                          maxi[i] = max(maxi[i], row[i]);
                  }
                  return accumulate(begin(maxi), begin(maxi) + m, 0);
              }
          };
        
        diff --git a/ README.md b/ README.md
          @@ -605,6 +605,7 @@ 
          for solving problems.
        
        
          |  1358  |   Medium   | [Number of Substrings Containing All Three Characters](Problems/1358.cpp)                          |
          |  1359  |    Hard    | [Count All Valid Pickup and Delivery Options](Problems/1359.cpp)                                   |
          |  1361  |   Medium   | [Validate Binary Tree Nodes](Problems/1361.cpp)                                                    |
          |  1366  |   Medium   | [Rank Teams by Votes](Problems/1366.cpp)                                                           |
          |  1367  |   Medium   | [Linked List in Binary Tree ](Problems/1367.cpp)                                                   |
          |  1371  |   Medium   | [Find the Longest Substring Containing Vowels in Even Counts](Problems/1371.cpp)                   |
          |  1372  |   Medium   | [Longest ZigZag Path in a Binary Tree](Problems/1372.cpp)                                          |
        
        
          @@ -666,6 +667,7 @@ 
          for solving problems.
        
        
          |  1535  |   Medium   | [Find the Winner of an Array Game](Problems/1535.cpp)                                              |
          |  1539  |    Easy    | [Kth Missing Positive Number](Problems/1539.cpp)                                                   |
          |  1544  |    Easy    | [Make The String Great](Problems/1544.cpp)                                                         |
          |  1545  |   Medium   | [Find Kth Bit in Nth Binary String](Problems/1545.cpp)                                             |
          |  1547  |    Hard    | [Minimum Cost to Cut a Stick](Problems/1547.cpp)                                                   |
          |  1551  |   Medium   | [Minimum Operations to Make Array Equal](Problems/1551.cpp)                                        |
          |  1552  |   Medium   | [Magnetic Force Between Two Balls](Problems/1552.cpp)                                              |
        
        
          @@ -696,6 +698,7 @@ 
          for solving problems.
        
        
          |  1641  |   Medium   | [Count Sorted Vowel Strings](Problems/1641.cpp)                                                    |
          |  1646  |    Easy    | [Get Maximum in Generated Array](Problems/1646.cpp)                                                |
          |  1647  |   Medium   | [Minimum Deletions to Make Character Frequencies Unique](Problems/1647.cpp)                        |
          |  1653  |   Medium   | [Minimum Deletions to Make String Balanced](Problems/1653.cpp)                                     |
          |  1657  |   Medium   | [Determine if Two Strings Are Close](Problems/1657.cpp)                                            |
          |  1658  |   Medium   | [Minimum Operations to Reduce X to Zero](Problems/1658.cpp)                                        |
          |  1663  |   Medium   | [Smallest String With A Given Numeric Value](Problems/1663.cpp)                                    |
        
        
          @@ -844,6 +847,7 @@ 
          for solving problems.
        
        
          |  2369  |   Medium   | [Check if There is a Valid Partition For The Array](Problems/2369.cpp)                             |
          |  2374  |   Medium   | [Node With Highest Edge Score](Problems/2374.cpp)                                                  |
          |  2375  |   Medium   | [Construct Smallest Number From DI String](Problems/2375.cpp)                                      |
          |  2385  |   Medium   | [Amount of Time for Binary Tree to Be Infected](Problems/2385.cpp)                                 |
          |  2390  |   Medium   | [Removing Stars From a String](Problems/2390.cpp)                                                  |
          |  2391  |   Medium   | [Minimum Amount of Time to Collect Garbage](Problems/2391.cpp)                                     |
          |  2396  |   Medium   | [Strictly Palindromic Number](Problems/2396.cpp)                                                   |
        
        
          @@ -900,7 +904,9 @@ 
          for solving problems.
        
        
          |  2665  |    Easy    | [Counter II](Problems/2665.js)                                                                     |
          |  2666  |    Easy    | [Allow One Function Call](Problems/2666.js)                                                        |
          |  2667  |    Easy    | [Create Hello World Function](Problems/2667.js)                                                    |
          |  2673  |   Medium   | [Make Costs of Paths Equal in a Binary Tree](Problems/2673.cpp)                                    |
          |  2676  |   Medium   | [Throttle](Problems/2676.js)                                                                       |
          |  2679  |   Medium   | [Sum in a Matrix](Problems/2679.cpp)                                                               |
          |  2683  |   Medium   | [Neighboring Bitwise XOR](Problems/2683.cpp)                                                       |
          |  2685  |   Medium   | [Count the Number of Complete Components](Problems/2685.cpp)                                       |
          |  2698  |   Medium   | [Find the Punishment Number of an Integer](Problems/2698.cpp)                                      |