diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/158_\350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/158_\350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ed1339f85ebf263c96a680feda93b2ab43e98f22 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/158_\350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/158_\350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/solution.cpp" @@ -0,0 +1,29 @@ +// 滑动窗口 +// 时间复杂度:O(n) 空间复杂度:O(n) +class Solution +{ +public: + int lengthOfLongestSubstringTwoDistinct(string s) + { + unordered_map m; + int cnt = 0; // 不同字符个数 + int left = 0, right = 0; // right指向的是窗口外的下一个字符 + int maxLen = 0; + while (right < s.size()) + { + if (m[s[right]] == 0) + cnt++; // 出现新字符 + m[s[right++]]++; // 计数+1并右移 + while (cnt > 2) + { // 当窗口元素大于2,窗口缩小 + m[s[left]]--; // 计数-1 + if (m[s[left++]] == 0) + { + cnt--; // 字符计数减为0 + } + } + maxLen = max(maxLen, right - left); // 满足条件的窗口长度 + } + return maxLen; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/159_\347\233\270\344\272\244\351\223\276\350\241\250/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/159_\347\233\270\344\272\244\351\223\276\350\241\250/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd14b123cc99aa7cbab5e57d60697568a12c8809 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/159_\347\233\270\344\272\244\351\223\276\350\241\250/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/159_\347\233\270\344\272\244\351\223\276\350\241\250/solution.cpp" @@ -0,0 +1,24 @@ + +struct ListNode +{ + int val; + ListNode *next; + ListNode(int x) : val(x), next(NULL) {} +}; + +class Solution +{ +public: + ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) + { + if (!headA || !headB) + return NULL; + ListNode *l1 = headA, *l2 = headB; + while (l1 != l2) + { + l1 = l1 ? l1->next : headB; + l2 = l2 ? l2->next : headA; + } + return l1; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/160_\347\233\270\351\232\224\344\270\272 1 \347\232\204\347\274\226\350\276\221\350\267\235\347\246\273/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/160_\347\233\270\351\232\224\344\270\272 1 \347\232\204\347\274\226\350\276\221\350\267\235\347\246\273/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..01d86b4b830dbe8c5df0e19e2893cb056fb67345 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/160_\347\233\270\351\232\224\344\270\272 1 \347\232\204\347\274\226\350\276\221\350\267\235\347\246\273/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/160_\347\233\270\351\232\224\344\270\272 1 \347\232\204\347\274\226\350\276\221\350\267\235\347\246\273/solution.cpp" @@ -0,0 +1,27 @@ +class Solution +{ +public: + bool isOneEditDistance(string s, string t) + { + int gap = s.size() - t.size(); + s = s + '0'; + t = t + '0'; + if (gap == 0) + { + int k = 0; + for (int i = 0; i < s.size(); i++) + if (s[i] != t[i]) + k++; + if (k == 1) + return true; + } + else if (abs(gap) == 1) + { + for (int i = 0; i < s.size(); i++) + if (s[i] != t[i] && s[i] != t[i + 1] && s[i + 1] != t[i]) + return false; + return true; + } + return false; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/161_\345\257\273\346\211\276\345\263\260\345\200\274/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/161_\345\257\273\346\211\276\345\263\260\345\200\274/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5dde5326a21bd1695e74faebea3df871e73f6fc2 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/161_\345\257\273\346\211\276\345\263\260\345\200\274/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/161_\345\257\273\346\211\276\345\263\260\345\200\274/solution.cpp" @@ -0,0 +1,31 @@ +#include +#include + +using namespace std; + +class Solution +{ +public: + int findPeakElement(vector &nums) + { + int left = 0; + int right = nums.size() - 1; + while (left <= right) + { + int mid = (left + right) >> 1; + if (left == right) + { + return left; + } + if (nums[mid] > nums[mid + 1]) + { + right = mid; + } + else + { + left = mid + 1; + } + } + return -1; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/162_\347\274\272\345\244\261\347\232\204\345\214\272\351\227\264/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/162_\347\274\272\345\244\261\347\232\204\345\214\272\351\227\264/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..54963823105b01dcd8630ff5b9b1d6d8f9e16057 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/162_\347\274\272\345\244\261\347\232\204\345\214\272\351\227\264/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/162_\347\274\272\345\244\261\347\232\204\345\214\272\351\227\264/solution.cpp" @@ -0,0 +1,30 @@ +class Solution +{ +public: + vector findMissingRanges(vector &nums, int lower, int upper) + { + long l = lower; + vector ans; + for (int i = 0; i < nums.size(); ++i) + { + if (l == nums[i]) + l++; //相等,我跳过你 + else if (l < nums[i]) + { //有空缺 + if (l < nums[i] - 1) //大于1 + ans.push_back(to_string(l) + "->" + to_string(nums[i] - 1)); + else if (l == nums[i] - 1) //等于1 + ans.push_back(to_string(l)); + l = long(nums[i]) + 1; //更新l到nums[i]下一个数 + // [2147483647] + // 0 + // 2147483647 + } + } + if (l < upper) + ans.push_back(to_string(l) + "->" + to_string(upper)); + else if (l == upper) + ans.push_back(to_string(l)); + return ans; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/163_\346\234\200\345\244\247\351\227\264\350\267\235/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/163_\346\234\200\345\244\247\351\227\264\350\267\235/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..49ac2f1f08afcd29759bf2e9542da568197a980d 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/163_\346\234\200\345\244\247\351\227\264\350\267\235/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/163_\346\234\200\345\244\247\351\227\264\350\267\235/solution.cpp" @@ -0,0 +1,17 @@ +class Solution +{ +public: + int maximumGap(vector &nums) + { + if (nums.size() < 2) + return 0; + sort(nums.begin(), nums.end()); + int max_difference = 0; + for (int i = 0; i < nums.size() - 1; i++) + { + if (nums[i + 1] - nums[i] > max_difference) + max_difference = nums[i + 1] - nums[i]; + } + return max_difference; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/164_\346\257\224\350\276\203\347\211\210\346\234\254\345\217\267/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/164_\346\257\224\350\276\203\347\211\210\346\234\254\345\217\267/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..094a07a19b8d3279edbf0327cff570f264a32a7d 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/164_\346\257\224\350\276\203\347\211\210\346\234\254\345\217\267/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/164_\346\257\224\350\276\203\347\211\210\346\234\254\345\217\267/solution.cpp" @@ -0,0 +1,32 @@ +class Solution +{ +public: + int compareVersion(string version1, string version2) + { + int n1 = version1.size(), n2 = version2.size(); + int i = 0, j = 0, d1 = 0, d2 = 0; + string v1, v2; + while (i < n1 || j < n2) + { + while (i < n1 && version1[i] != '.') + { + v1 += (version1[i++]); + } + d1 = atoi(v1.c_str()); + while (j < n2 && version2[j] != '.') + { + v2 += (version2[j++]); + } + d2 = atoi(v2.c_str()); + if (d1 > d2) + return 1; + else if (d1 < d2) + return -1; + v1.clear(); + v2.clear(); + ++i; + ++j; + } + return 0; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/165_\345\210\206\346\225\260\345\210\260\345\260\217\346\225\260/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/165_\345\210\206\346\225\260\345\210\260\345\260\217\346\225\260/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..44ff35fba73ee5eda01680497e3c010c42655e58 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/165_\345\210\206\346\225\260\345\210\260\345\260\217\346\225\260/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/165_\345\210\206\346\225\260\345\210\260\345\260\217\346\225\260/solution.cpp" @@ -0,0 +1,36 @@ +class Solution +{ +public: + string fractionToDecimal(int numerator, int denominator) + { + int m1 = numerator > 0 ? 1 : -1; + int m2 = denominator > 0 ? 1 : -1; + long long num = abs((long long)numerator); + long long den = abs((long long)denominator); + long long t = num / den; + long long res = num % den; + string ans = to_string(t); + if (m1 * m2 == -1 && (t > 0 || res > 0)) + ans = '-' + ans; + if (res == 0) + return ans; + ans += '.'; + unordered_map m; + string s = ""; + int pos = 0; + while (res != 0) + { + if (m.find(res) != m.end()) + { + s.insert(m[res], "("); + s += ')'; + return ans + s; + } + m[res] = pos; + s += to_string((res * 10) / den); + res = (res * 10) % den; + pos++; + } + return ans + s; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/166_\344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/166_\344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..50e98fc697a341388be20c98124cda0fff11a59e 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/166_\344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/166_\344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204/solution.cpp" @@ -0,0 +1,26 @@ +class Solution +{ +public: + vector twoSum(vector &numbers, int target) + { + int i = 0; //第一个指针从头开始 + int j = numbers.size() - 1; //第二个指针从末尾开始 + while (i < j) + { + int sum = numbers[i] + numbers[j]; //sum为两数之和 + if (sum > target) //sum比目标值大了,则需要变小,于是末尾指针前移 + { + j--; + } + else if (sum < target) //sum比目标值小了,则需要变大,于是首指针后移 + { + i++; + } + else //不大于也不小于,则等于。满足了条件,返回即可 + { + return {i + 1, j + 1}; //由于返回的是下标值,所以需要+1 + } + } + return {-1, -1}; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/167_Excel\350\241\250\345\210\227\345\220\215\347\247\260/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/167_Excel\350\241\250\345\210\227\345\220\215\347\247\260/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..29f07dddfcc3c7a7d3bc7c6befbb3e32624a5c2a 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/167_Excel\350\241\250\345\210\227\345\220\215\347\247\260/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/167_Excel\350\241\250\345\210\227\345\220\215\347\247\260/solution.cpp" @@ -0,0 +1,23 @@ +class Solution +{ +public: + string convertToTitle(int n) + { + string ans; + while (n) + { + if (n % 26 == 0) + { + ans = ans + 'Z'; + n = n - 26; + } + else + { + ans += (n % 26 - 1 + 'A'); + } + n /= 26; + } + reverse(ans.begin(), ans.end()); + return ans; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/168_\345\244\232\346\225\260\345\205\203\347\264\240/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/168_\345\244\232\346\225\260\345\205\203\347\264\240/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4031150ee3e78d75f8cb78d7580a44e7c1fbea3e 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/168_\345\244\232\346\225\260\345\205\203\347\264\240/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/168_\345\244\232\346\225\260\345\205\203\347\264\240/solution.cpp" @@ -0,0 +1,15 @@ +class Solution +{ +public: + int majorityElement(vector &nums) + { + map mp; + for (int i = 0; i < nums.size(); i++) + { + mp[nums[i]] += 1; + if (mp[nums[i]] > nums.size() / 2) + return nums[i]; + } + return -1; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/169_\344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/169_\344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c4a053d93dcdb77570718053f76fe94d42f4a957 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/169_\344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/169_\344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241/solution.cpp" @@ -0,0 +1,27 @@ +class TwoSum +{ + unordered_map m; + +public: + /** Initialize your data structure here. */ + TwoSum() + { + } + + /** Add the number to an internal data structure.. */ + void add(int number) + { + m[number]++; + } + + /** Find if there exists any pair of numbers which sum is equal to the value. */ + bool find(int value) + { + for (auto it = m.begin(); it != m.end(); ++it) + { + if ((it->first * 2 == value && it->second >= 2) || (it->first * 2 != value && m.find(value - it->first) != m.end())) + return true; + } + return false; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/170_Excel\350\241\250\345\210\227\345\272\217\345\217\267/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/170_Excel\350\241\250\345\210\227\345\272\217\345\217\267/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..43c18fc14d21346ad286cef25ea3680951bb5131 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/170_Excel\350\241\250\345\210\227\345\272\217\345\217\267/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/170_Excel\350\241\250\345\210\227\345\272\217\345\217\267/solution.cpp" @@ -0,0 +1,15 @@ +class Solution +{ +public: + int titleToNumber(string s) + { + int sum = 0; + int i = 0; + for (i = 0; i < s.size() - 1; ++i) + { + sum = (sum + s[i] - 64) * 26; + } + sum += (s[i] - 64); + return sum; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/171_\351\230\266\344\271\230\345\220\216\347\232\204\351\233\266/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/171_\351\230\266\344\271\230\345\220\216\347\232\204\351\233\266/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f46ebbe8e68844c37e338e512e2ee85e4b384cef 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/171_\351\230\266\344\271\230\345\220\216\347\232\204\351\233\266/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/171_\351\230\266\344\271\230\345\220\216\347\232\204\351\233\266/solution.cpp" @@ -0,0 +1,14 @@ +class Solution +{ +public: + int trailingZeroes(int n) + { + int count = 0; + while (n >= 5) + { + count += n / 5; + n /= 5; + } + return count; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/172_\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/172_\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..27e17897f36470066025a00af6a974946910cab5 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/172_\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/172_\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250/solution.cpp" @@ -0,0 +1,45 @@ + +struct TreeNode +{ + int val; + TreeNode *left; + TreeNode *right; + TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +class BSTIterator +{ +public: + BSTIterator(TreeNode *root) + { + TreeNode *cur = root; + while (cur) + { + st.push(cur); + cur = cur->left; + } + } + + /** @return whether we have a next smallest number */ + bool hasNext() + { + return !st.empty(); + } + + /** @return the next smallest number */ + int next() + { + TreeNode *next = st.top(); + TreeNode *cur = next->right; + st.pop(); + while (cur) + { + st.push(cur); + cur = cur->left; + } + return next->val; + } + +private: + stack st; +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/173_\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/173_\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cd9eb96c72b0e2d8c5e7a724b7085e114c1011c9 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/173_\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/173_\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217/solution.cpp" @@ -0,0 +1,26 @@ +class Solution +{ +public: + int calculateMinimumHP(vector> &dungeon) + { + if (dungeon.empty()) + { + return 0; + } + int m = dungeon.size(), n = dungeon[0].size(); + vector> dp(m + 1, vector(n + 1, INT_MAX)); + dp[m - 1][n] = dp[m][n - 1] = 1; + for (int i = m - 1; i >= 0; --i) + { + for (int j = n - 1; j >= 0; --j) + { + dp[i][j] = min(dp[i + 1][j], dp[i][j + 1]) - dungeon[i][j]; + if (dp[i][j] <= 0) + { + dp[i][j] = 1; + } + } + } + return dp[0][0]; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/178_\346\234\200\345\244\247\346\225\260/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/178_\346\234\200\345\244\247\346\225\260/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3a6e7d4b0126ac67d87ea32d7b5bf65b7d9d62c1 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/178_\346\234\200\345\244\247\346\225\260/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/178_\346\234\200\345\244\247\346\225\260/solution.cpp" @@ -0,0 +1,26 @@ +class Solution +{ +public: + bool static cmp(string a, string b) + { + return (a + b) > (b + a); //当a+b>b+a时a排在b前面 + } + string largestNumber(vector &nums) + { + int flag = 0; + vector v; + for (vector::iterator i = nums.begin(); i < nums.end(); i++) + { + v.push_back(to_string(*i)); + if (*i) + flag = 1; + } + if (!flag) + return "0"; + sort(v.begin(), v.end(), cmp); //没有生成实例就要调用,故cmp应声明为static + string s = ""; + for (int i = 0; i < v.size(); i++) + s = s + v[i]; + return s; + } +}; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/185_\347\277\273\350\275\254\345\255\227\347\254\246\344\270\262\351\207\214\347\232\204\345\215\225\350\257\215 II/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/185_\347\277\273\350\275\254\345\255\227\347\254\246\344\270\262\351\207\214\347\232\204\345\215\225\350\257\215 II/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ceed36cab62fd976071060d2e6abfe4a7aef49d0 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/185_\347\277\273\350\275\254\345\255\227\347\254\246\344\270\262\351\207\214\347\232\204\345\215\225\350\257\215 II/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/185_\347\277\273\350\275\254\345\255\227\347\254\246\344\270\262\351\207\214\347\232\204\345\215\225\350\257\215 II/solution.cpp" @@ -0,0 +1,28 @@ +class Solution +{ +public: + void reverseWords(string &s) + { + int left = 0; + for (int i = 0; i <= s.size(); ++i) + { + if (i == s.size() || s[i] == ' ') + { + reverse(s, left, i - 1); + left = i + 1; + } + } + reverse(s, 0, s.size() - 1); + } + void reverse(string &s, int left, int right) + { + while (left < right) + { + char t = s[left]; + s[left] = s[right]; + s[right] = t; + ++left; + --right; + } + } +}; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/186_\351\207\215\345\244\215\347\232\204DNA\345\272\217\345\210\227/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/186_\351\207\215\345\244\215\347\232\204DNA\345\272\217\345\210\227/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dafa4c27694481f16eaf99968ea2c26b1f5533d5 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/186_\351\207\215\345\244\215\347\232\204DNA\345\272\217\345\210\227/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/186_\351\207\215\345\244\215\347\232\204DNA\345\272\217\345\210\227/solution.cpp" @@ -0,0 +1,29 @@ +class Solution +{ +public: + vector findRepeatedDnaSequences(string s) + { + if (s.size() < 10) + return {}; + vector ans; + unordered_set ss; + unordered_set t; + for (int i = 0; i < s.size() - 9; ++i) + { + + if (ss.count(s.substr(i, 10))) + { + if (!t.count(s.substr(i, 10))) + { + ans.push_back(s.substr(i, 10)); + t.insert(s.substr(i, 10)); + } + } + else + { + ss.insert(s.substr(i, 10)); + } + } + return ans; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/187_\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/187_\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6b9f0753e1fb268478b7f53c18fa7e983b85ae9e 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/187_\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/187_\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV/solution.cpp" @@ -0,0 +1,56 @@ +class Solution +{ + int maxProfit(int max_k, int[] prices) + { + int n = prices.length; + if (n == 0) + { + return 0; + } + if (max_k > n / 2) + { + int[][] dp2 = new int[n][2]; + //若max_k > n/2,则交易次数k没有约束 + for (int i = 0; i < n; i++) + { + //base case + if (i - 1 == -1) + { + dp2[i][0] = 0; + dp2[i][1] = -prices[i]; + continue; + } + //状态转移方程 + dp2[i][0] = Math.max(dp2[i - 1][0], dp2[i - 1][1] + prices[i]); + dp2[i][1] = Math.max(dp2[i - 1][1], dp2[i - 1][0] - prices[i]); + } + return dp2[n - 1][0]; + } + + /** + * k = 任意整数 + * dp[i][k][0]表示第i天剩余k次交易机会,不持有股票 + * dp[i][k][1]表示第i天剩余k次交易机会,持有股票 + */ + int[][][] dp = new int[n][max_k + 1][2]; + + for (int i = 0; i < n; i++) + { + for (int k = max_k; k >= 1; k--) + { + //base case + if (i - 1 == -1) + { + dp[i][k][0] = 0; + dp[i][k][1] = -prices[i]; + continue; + } + //状态转移方程 + dp[i][k][0] = Math.max(dp[i - 1][k][0], dp[i - 1][k][1] + prices[i]); + dp[i][k][1] = Math.max(dp[i - 1][k][1], dp[i - 1][k - 1][0] - prices[i]); + } + } + + return dp[n - 1][max_k][0]; + } +} \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/188_\346\227\213\350\275\254\346\225\260\347\273\204/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/188_\346\227\213\350\275\254\346\225\260\347\273\204/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..07f953864d391a3b579ad97b5a1d8f5f449fa9f5 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/188_\346\227\213\350\275\254\346\225\260\347\273\204/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/188_\346\227\213\350\275\254\346\225\260\347\273\204/solution.cpp" @@ -0,0 +1,33 @@ +class Solution +{ +public: + //数组反转函数 + void reverseArray(vector &array, int begin, int end) + { + int temp, tmp_end = end; + for (int i = begin; i <= (begin + end) / 2; i++) + { + temp = array[i]; + array[i] = array[tmp_end]; + array[tmp_end] = temp; + tmp_end--; + } + } + + void rotate(vector &nums, int k) + { + int len = nums.size(); + k %= len; + if (k == 0) + return; + //使用自定义的反转函数 + reverseArray(nums, 0, len - k - 1); + reverseArray(nums, len - k, len - 1); + reverseArray(nums, 0, len - 1); + + //使用C++自带的反转函数 + /*reverse(nums.begin(), nums.end() - k); + reverse(nums.end() - k, nums.end()); + reverse(nums.begin(), nums.end());*/ + } +}; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/189_\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/189_\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..db81ee811775bb0e094628c8a473bdc4d22a0284 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/189_\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/189_\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215/solution.cpp" @@ -0,0 +1,16 @@ +class Solution +{ +public: + uint32_t reverseBits(uint32_t n) + { + uint32_t m = 0; + for (int i = 0; i < 32; ++i) + { + m <<= 1; + m = m | (n & 1); + n >>= 1; + } + + return m; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/190_\344\275\2151\347\232\204\344\270\252\346\225\260/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/190_\344\275\2151\347\232\204\344\270\252\346\225\260/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6581560980e52b4633d89f14a12497507632e577 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/190_\344\275\2151\347\232\204\344\270\252\346\225\260/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/190_\344\275\2151\347\232\204\344\270\252\346\225\260/solution.cpp" @@ -0,0 +1,15 @@ +class Solution +{ +public: + int hammingWeight(uint32_t n) + { + int cnt = 0; + for (auto i = 0; i < 32; i++) + { + if (1 << i & n) + cnt++; + } + + return cnt; + } +}; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/191_\347\273\237\350\256\241\350\257\215\351\242\221/solution.sh" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/191_\347\273\237\350\256\241\350\257\215\351\242\221/solution.sh" new file mode 100644 index 0000000000000000000000000000000000000000..a950161ff6d74efd0cd27f5d81a1ff960eb26094 --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/191_\347\273\237\350\256\241\350\257\215\351\242\221/solution.sh" @@ -0,0 +1 @@ +cat words.txt |tr -s ' ' '\n' |sort|uniq -c|sort -r|awk '{print $2,$1}' \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/192_\346\234\211\346\225\210\347\224\265\350\257\235\345\217\267\347\240\201/solution.sh" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/192_\346\234\211\346\225\210\347\224\265\350\257\235\345\217\267\347\240\201/solution.sh" new file mode 100644 index 0000000000000000000000000000000000000000..50f3410a4c721ea8b2d9e3923f98923f73828d33 --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/192_\346\234\211\346\225\210\347\224\265\350\257\235\345\217\267\347\240\201/solution.sh" @@ -0,0 +1 @@ +grep -E "^\([0-9]{3}) [0-9]{3}-[0-9]{4}$|^[0-9]{3}-[0-9]{3}-[0-9]{4}$" file.txt diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/193_\350\275\254\347\275\256\346\226\207\344\273\266/solution.sh" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/193_\350\275\254\347\275\256\346\226\207\344\273\266/solution.sh" new file mode 100644 index 0000000000000000000000000000000000000000..41c96f2c6fae3f6f84425a0fdd5bd0ff8f77663c --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/193_\350\275\254\347\275\256\346\226\207\344\273\266/solution.sh" @@ -0,0 +1,4 @@ +count=$(head -1 file.txt | wc -w) +for ((i = 1; i <= count; i++)); do + awk -v arg=$i '{print $arg}' file.txt | xargs +done diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/194_\347\254\254\345\215\201\350\241\214/solution.sh" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/194_\347\254\254\345\215\201\350\241\214/solution.sh" new file mode 100644 index 0000000000000000000000000000000000000000..2d4848f881508394564aca0bfb444a08ba4580bd --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/194_\347\254\254\345\215\201\350\241\214/solution.sh" @@ -0,0 +1 @@ +awk "NR==10" file.txt \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/195_\345\210\240\351\231\244\351\207\215\345\244\215\347\232\204\347\224\265\345\255\220\351\202\256\347\256\261/solution.sql" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/195_\345\210\240\351\231\244\351\207\215\345\244\215\347\232\204\347\224\265\345\255\220\351\202\256\347\256\261/solution.sql" new file mode 100644 index 0000000000000000000000000000000000000000..1cf7059c6531bb13c693657ad3137ec3343959ba --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/195_\345\210\240\351\231\244\351\207\215\345\244\215\347\232\204\347\224\265\345\255\220\351\202\256\347\256\261/solution.sql" @@ -0,0 +1,4 @@ +DELETE p2 +FROM Person p1 + JOIN Person p2 ON p2.Email = p1.Email +WHERE p2.Id > p1.Id; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/196_\344\270\212\345\215\207\347\232\204\346\270\251\345\272\246/solution.sql" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/196_\344\270\212\345\215\207\347\232\204\346\270\251\345\272\246/solution.sql" new file mode 100644 index 0000000000000000000000000000000000000000..75f7cc59309b2c0029bb1afd24c9e46311c3bce6 --- /dev/null +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/196_\344\270\212\345\215\207\347\232\204\346\270\251\345\272\246/solution.sql" @@ -0,0 +1,4 @@ +select a.id `Id` +from Weather a + inner join Weather b on datediff(a.recordDate, b.recordDate) = 1 +where a.Temperature > b.Temperature \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/197_\346\211\223\345\256\266\345\212\253\350\210\215/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/197_\346\211\223\345\256\266\345\212\253\350\210\215/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..313bf338663b21d0e59b9da44d46aab07d03e8e0 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/197_\346\211\223\345\256\266\345\212\253\350\210\215/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/197_\346\211\223\345\256\266\345\212\253\350\210\215/solution.cpp" @@ -0,0 +1,19 @@ +class Solution +{ +public: + int rob(vector &nums) + { + if (nums.size() == 0) + return 0; + if (nums.size() == 1) + return nums[0]; + vector dp(nums.size()); + dp[0] = nums[0]; + dp[1] = max(nums[0], nums[1]); + for (int i = 2; i < nums.size(); i++) + { + dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]); + } + return dp[nums.size() - 1]; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/198_\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/198_\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9cbb688d0da399c65c424a302c5dd32ba194b017 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/198_\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/198_\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276/solution.cpp" @@ -0,0 +1,35 @@ + +struct TreeNode +{ + int val; + TreeNode *left; + TreeNode *right; + TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +class Solution +{ +public: + vector rightSideView(TreeNode *root) + { + vector view; //save the result + queue> Q; + if (root) + Q.push(make_pair(root, 0)); //root and its level 0 + while (!Q.empty()) + { + TreeNode *node = Q.front().first; //current node + int depth = Q.front().second; //level of the node + Q.pop(); + if (view.size() == depth) //每行第一个 + view.push_back(node->val); + else + view[depth] = node->val; //每行只存一个,不断更新 + if (node->left) + Q.push(make_pair(node->left, depth + 1)); + if (node->right) + Q.push(make_pair(node->right, depth + 1)); + } + return view; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/199_\345\262\233\345\261\277\346\225\260\351\207\217/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/199_\345\262\233\345\261\277\346\225\260\351\207\217/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..16576700e85d5b0e99c98d1ef1d65418faff2c76 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/199_\345\262\233\345\261\277\346\225\260\351\207\217/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/199_\345\262\233\345\261\277\346\225\260\351\207\217/solution.cpp" @@ -0,0 +1,48 @@ +class Solution +{ +public: + void DFS(vector> &mark, vector> &grid, int x, int y) + { //深度搜索 + mark[x][y] = 1; //标记以搜索的位置 + static const int dx[] = {-1, 1, 0, 0}; //方向数组 + static const int dy[] = {0, 0, -1, 1}; + for (int i = 0; i < 4; i++) + { + int newx = dx[i] + x; + int newy = dy[i] + y; + if (newx < 0 || newx >= mark.size() || newy < 0 || newy >= mark[newx].size()) + { //超过数组边界时 + continue; + } + if (mark[newx][newy] == 0 && grid[newx][newy] == '1') + { + DFS(mark, grid, newx, newy); + } + } + } + int numIslands(vector> &grid) + { + int island_num = 0; //记载岛屿数量 + vector> mark; + for (int i = 0; i < grid.size(); i++) + { + mark.push_back(vector()); + for (int j = 0; j < grid[i].size(); j++) + { + mark[i].push_back(0); + } + } + for (int i = 0; i < grid.size(); i++) + { + for (int j = 0; j < grid[i].size(); j++) + { + if (mark[i][j] == 0 && grid[i][j] == '1') + { + DFS(mark, grid, i, j); //或BFS + island_num++; + } + } + } + return island_num; + } +}; \ No newline at end of file diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/200_\346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/200_\346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dbae53024a1153d189e39fbb25a19ce8e62f31df 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/200_\346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/200_\346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216/solution.cpp" @@ -0,0 +1,14 @@ +class Solution +{ +public: + int rangeBitwiseAnd(int m, int n) + { + int i = 0; + for (; m != n; ++i) + { //直到m == n的时候,得到的就是两者的公共前缀 + m >>= 1; + n >>= 1; + } + return n << i; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/201_\345\277\253\344\271\220\346\225\260/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/201_\345\277\253\344\271\220\346\225\260/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5dec1861d4d97312f5d3803dad41599ba022abeb 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/201_\345\277\253\344\271\220\346\225\260/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/201_\345\277\253\344\271\220\346\225\260/solution.cpp" @@ -0,0 +1,23 @@ +class Solution +{ +public: + bool isHappy(int n) + { + map m; + while (n != 1 && m.find(n) == m.end()) + { + m.insert(pair(n, 0)); + int s = 0; + while (n) + { + s += pow((n % 10), 2); + n /= 10; + } + n = s; + } + if (n == 1) + return true; + else + return false; + } +}; diff --git "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/202_\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240/solution.cpp" "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/202_\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240/solution.cpp" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7433ceea261bfd71d5a5b71b94a9432f1e09e002 100644 --- "a/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/202_\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240/solution.cpp" +++ "b/data/3.\347\256\227\346\263\225\351\253\230\351\230\266/1.leetcode/202_\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240/solution.cpp" @@ -0,0 +1,20 @@ +struct ListNode +{ + int val; + ListNode *next; + ListNode(int x) : val(x), next(NULL) {} +}; + +class Solution +{ +public: + ListNode *removeElements(ListNode *head, int val) + { + if (head == NULL) + { + return NULL; + } + head->next = removeElements(head->next, val); + return head->val == val ? head->next : head; + } +};