diff options
| author | crupest <crupest@outlook.com> | 2021-09-26 12:50:45 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2021-09-26 12:50:45 +0800 | 
| commit | 1f9626144c4856d0a7d93b125175879d5a6685d4 (patch) | |
| tree | 9dead909b644b68598396ff78490c11a067f5e07 /works/solutions | |
| parent | 8eb02362780883d16acc31c51225f6e9196405f2 (diff) | |
| download | crupest-1f9626144c4856d0a7d93b125175879d5a6685d4.tar.gz crupest-1f9626144c4856d0a7d93b125175879d5a6685d4.tar.bz2 crupest-1f9626144c4856d0a7d93b125175879d5a6685d4.zip | |
import(solutions): ...
Diffstat (limited to 'works/solutions')
| -rw-r--r-- | works/solutions/.gitignore | 2 | ||||
| -rw-r--r-- | works/solutions/leetcode/cpp/371.cpp | 25 | ||||
| -rw-r--r-- | works/solutions/leetcode/lccup/2021/1.cpp | 27 | ||||
| -rw-r--r-- | works/solutions/leetcode/week/260/1.cpp | 21 | ||||
| -rw-r--r-- | works/solutions/leetcode/week/260/2.cpp | 29 | 
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 | 
