aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-09-26 12:50:45 +0800
committercrupest <crupest@outlook.com>2021-09-26 12:50:45 +0800
commit1f9626144c4856d0a7d93b125175879d5a6685d4 (patch)
tree9dead909b644b68598396ff78490c11a067f5e07
parent8eb02362780883d16acc31c51225f6e9196405f2 (diff)
downloadcrupest-1f9626144c4856d0a7d93b125175879d5a6685d4.tar.gz
crupest-1f9626144c4856d0a7d93b125175879d5a6685d4.tar.bz2
crupest-1f9626144c4856d0a7d93b125175879d5a6685d4.zip
import(solutions): ...
-rw-r--r--works/solutions/.gitignore2
-rw-r--r--works/solutions/leetcode/cpp/371.cpp25
-rw-r--r--works/solutions/leetcode/lccup/2021/1.cpp27
-rw-r--r--works/solutions/leetcode/week/260/1.cpp21
-rw-r--r--works/solutions/leetcode/week/260/2.cpp29
5 files changed, 104 insertions, 0 deletions
diff --git a/works/solutions/.gitignore b/works/solutions/.gitignore
index 951dd99..aab2f3b 100644
--- a/works/solutions/.gitignore
+++ b/works/solutions/.gitignore
@@ -5,3 +5,5 @@
*.obj
*.exp
*.lib
+
+.DS_Store
diff --git a/works/solutions/leetcode/cpp/371.cpp b/works/solutions/leetcode/cpp/371.cpp
new file mode 100644
index 0000000..3a7bc8b
--- /dev/null
+++ b/works/solutions/leetcode/cpp/371.cpp
@@ -0,0 +1,25 @@
+
+class Solution {
+public:
+ int getSum(int a, int b) {
+ unsigned x = a, y = b;
+
+ unsigned carry = 0;
+
+ unsigned result = 0;
+
+ for (int i = 0; i < sizeof(int) * 8; i++) {
+ unsigned mask = 1 << i;
+
+ unsigned n = x & mask ? 1 : 0, m = y & mask ? 1 : 0;
+
+ if (n ^ m ^ carry) {
+ result |= mask;
+ }
+
+ carry = n & m || n & carry || m & carry;
+ }
+
+ return static_cast<int>(result);
+ }
+};
diff --git a/works/solutions/leetcode/lccup/2021/1.cpp b/works/solutions/leetcode/lccup/2021/1.cpp
new file mode 100644
index 0000000..550da04
--- /dev/null
+++ b/works/solutions/leetcode/lccup/2021/1.cpp
@@ -0,0 +1,27 @@
+struct TreeNode {
+ int val;
+ TreeNode *left;
+ TreeNode *right;
+ TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
+};
+
+class Solution {
+public:
+ int visited[1001] {0};
+ int result = 0;
+
+ void DFS(TreeNode* r) {
+ if (!visited[r->val]) {
+ result += 1;
+ visited[r->val] = 1;
+ }
+
+ if (r->left) DFS(r->left);
+ if (r->right) DFS(r->right);
+ }
+
+ int numColor(TreeNode* root) {
+ DFS(root);
+ return result;
+ }
+}; \ No newline at end of file
diff --git a/works/solutions/leetcode/week/260/1.cpp b/works/solutions/leetcode/week/260/1.cpp
new file mode 100644
index 0000000..4d6c78d
--- /dev/null
+++ b/works/solutions/leetcode/week/260/1.cpp
@@ -0,0 +1,21 @@
+#include <vector>
+
+using std::vector;
+
+class Solution {
+public:
+ int maximumDifference(vector<int>& nums) {
+ int result = -1;
+
+ for (int i = 1; i < nums.size(); i++) {
+ for (int j = 0; j < i; j++) {
+ int diff = nums[i] - nums[j];
+ if (diff > result) {
+ result = diff;
+ }
+ }
+ }
+
+ return result == 0 ? -1 : result;
+ }
+}; \ No newline at end of file
diff --git a/works/solutions/leetcode/week/260/2.cpp b/works/solutions/leetcode/week/260/2.cpp
new file mode 100644
index 0000000..86c4cf2
--- /dev/null
+++ b/works/solutions/leetcode/week/260/2.cpp
@@ -0,0 +1,29 @@
+#include <vector>
+
+using std::vector;
+
+#include <iterator>
+#include <limits>
+#include <numeric>
+
+class Solution {
+public:
+ long long gridGame(vector<vector<int>> &grid) {
+ int s = grid.front().size();
+ std::vector<long long> row0(grid[0].cbegin(), grid[0].cend());
+ std::vector<long long> row1(grid[1].cbegin(), grid[1].cend());
+ std::vector<long long> ps0, ps1;
+
+ std::partial_sum(row0.cbegin(), row0.cend(), std::back_inserter(ps0));
+ std::partial_sum(row1.cbegin(), row1.cend(), std::back_inserter(ps1));
+
+ long long r = std::numeric_limits<long long>::max();
+
+ for (int i = 0; i < s; i++) {
+ long long c = std::max(ps0.back() - ps0[i], i ? ps1[i - 1] : 0);
+ r = std::min(r, c);
+ }
+
+ return r;
+ }
+}; \ No newline at end of file