diff options
| author | crupest <crupest@outlook.com> | 2021-09-27 20:00:08 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2021-09-27 20:00:08 +0800 | 
| commit | a557fa36a22c5ef4a29da596ee1e3aa10be55984 (patch) | |
| tree | 295f6b5412c416cfa11c80eaf652eaedc9ba4a42 | |
| parent | a7cc0243652482a2d4ad3334fa12227133516942 (diff) | |
| download | crupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.tar.gz crupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.tar.bz2 crupest-a557fa36a22c5ef4a29da596ee1e3aa10be55984.zip | |
import(solutions): ...
| -rw-r--r-- | works/solutions/leetcode/2.cpp | 70 | ||||
| -rw-r--r-- | works/solutions/leetcode/cpp/15.cpp | 44 | 
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 | 
