aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-09-27 20:00:08 +0800
committercrupest <crupest@outlook.com>2021-09-27 20:00:08 +0800
commita557fa36a22c5ef4a29da596ee1e3aa10be55984 (patch)
tree295f6b5412c416cfa11c80eaf652eaedc9ba4a42
parenta7cc0243652482a2d4ad3334fa12227133516942 (diff)
downloadcrupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.tar.gz
crupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.tar.bz2
crupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.zip
import(solutions): ...
-rw-r--r--works/solutions/leetcode/2.cpp70
-rw-r--r--works/solutions/leetcode/cpp/15.cpp44
2 files changed, 114 insertions, 0 deletions
diff --git a/works/solutions/leetcode/2.cpp b/works/solutions/leetcode/2.cpp
new file mode 100644
index 0000000..4cf9c73
--- /dev/null
+++ b/works/solutions/leetcode/2.cpp
@@ -0,0 +1,70 @@
+#include <algorithm>
+#include <iostream>
+#include <set>
+#include <queue>
+
+using std::vector;
+
+struct P {
+ int x;
+ int y;
+};
+
+struct I {
+ int x;
+ int y;
+ int v;
+};
+
+P mm[]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
+
+class Solution {
+public:
+ vector<vector<int>> bicycleYard(vector<int> &position,
+ vector<vector<int>> &terrain,
+ vector<vector<int>> &obstacle) {
+ std::vector<std::vector<std::set<int>>> visited(
+ terrain.size(), std::vector<std::set<int>>(terrain.front().size()));
+
+ std::queue<I> q{{position[0], position[1], 1}};
+
+ bool f = false;
+
+ while (true) {
+ if (f && q.size() == 1) {
+ break;
+ }
+ f = true;
+
+ I b = q.back();
+ q.pop_back();
+
+ if (b.v <= 0 || visited[b.x][b.y].count(b.v)) {
+
+ }
+
+ visited[b.x][b.y].insert(v);
+
+ for (auto p : mm) {
+ int nx = x + p.x, ny = y + p.y;
+ if (nx >= 0 && nx < terrain.size() && ny >= 0 &&
+ ny < terrain.front().size()) {
+ DFS(v + terrain[x][y] - terrain[nx][ny] - obstacle[nx][ny], nx, ny,
+ terrain, obstacle, visited);
+ }
+ }
+ }
+
+ vector<vector<int>> result;
+
+ for (int i = 0; i < terrain.size(); i++) {
+ for (int j = 0; j < obstacle.size(); j++) {
+ if ((i != position[0] || j != position[1]) && visited[i][j].count(1)) {
+ result.push_back({i, j});
+ }
+ }
+ }
+
+ return result;
+ }
+}; \ No newline at end of file
diff --git a/works/solutions/leetcode/cpp/15.cpp b/works/solutions/leetcode/cpp/15.cpp
new file mode 100644
index 0000000..2b8f6cd
--- /dev/null
+++ b/works/solutions/leetcode/cpp/15.cpp
@@ -0,0 +1,44 @@
+#include <iterator>
+#include <vector>
+
+using std::vector;
+
+#include <algorithm>
+#include <set>
+#include <unordered_map>
+#include <unordered_set>
+
+bool operator<(const std::vector<int> &l, std::vector<int> &r) {
+ return std::lexicographical_compare(l.cbegin(), l.cend(), r.cbegin(),
+ r.cend());
+}
+
+class Solution {
+public:
+ int ha[100010]{0};
+
+ vector<vector<int>> threeSum(vector<int> &nums) {
+ std::set<std::vector<int>> result;
+
+ if (nums.size() < 3)
+ return {};
+
+ std::unordered_map<int, int> m;
+
+ for (auto n : nums) {
+ if (n >= 0)
+ m[n]++;
+ }
+
+ for (int i = 0; i < nums.size() - 2; i++) {
+ for (int j = i + 1; j < nums.size() - 1; j++) {
+ auto v = -nums[i] - nums[j];
+ if (v == 0) {
+
+ }
+ }
+ }
+
+ return std::vector<vector<int>>(result.cbegin(), result.cend());
+ }
+}; \ No newline at end of file