From 81139710a983e757bcd4481a4fd0c9ad673169ae Mon Sep 17 00:00:00 2001 From: huihut Date: Sun, 11 Feb 2018 22:17:45 +0800 Subject: [PATCH] =?UTF-8?q?66.=20Plus=20One=20=E3=80=81=2088.=20Merge=20So?= =?UTF-8?q?rted=20Array?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 ++- .../26-remove-duplicates-from-sorted-array.h | 0 .../4-median-of-two-sorted-arrays.h | 1 + Problems/LeetcodeProblems/66-plus-one.h | 15 ++++++++++++++ .../LeetcodeProblems/88-merge-sorted-array.h | 20 +++++++++++++++++++ README.md | 3 +++ 6 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 Problems/LeetcodeProblems/26-remove-duplicates-from-sorted-array.h create mode 100644 Problems/LeetcodeProblems/66-plus-one.h create mode 100644 Problems/LeetcodeProblems/88-merge-sorted-array.h diff --git a/.vscode/settings.json b/.vscode/settings.json index 30c1c8e..f30c192 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "type_traits": "cpp", "xstring": "cpp", "xtree": "cpp", - "xutility": "cpp" + "xutility": "cpp", + "iosfwd": "cpp" } } \ No newline at end of file diff --git a/Problems/LeetcodeProblems/26-remove-duplicates-from-sorted-array.h b/Problems/LeetcodeProblems/26-remove-duplicates-from-sorted-array.h new file mode 100644 index 0000000..e69de29 diff --git a/Problems/LeetcodeProblems/4-median-of-two-sorted-arrays.h b/Problems/LeetcodeProblems/4-median-of-two-sorted-arrays.h index 3ad5a44..57fd986 100644 --- a/Problems/LeetcodeProblems/4-median-of-two-sorted-arrays.h +++ b/Problems/LeetcodeProblems/4-median-of-two-sorted-arrays.h @@ -10,6 +10,7 @@ public: return (findKth(nums1, 0, nums2, 0, len / 2) + findKth(nums1, 0, nums2, 0, len / 2 + 1)) / 2; } + // find kth number of two sorted array double findKth(vector& nums1, int i1, vector& nums2, int i2, int k) { if (i1 >= nums1.size()) { return nums2[i2 + k - 1]; diff --git a/Problems/LeetcodeProblems/66-plus-one.h b/Problems/LeetcodeProblems/66-plus-one.h new file mode 100644 index 0000000..4aee315 --- /dev/null +++ b/Problems/LeetcodeProblems/66-plus-one.h @@ -0,0 +1,15 @@ +class Solution { +public: + vector plusOne(vector& digits) { + int carry = 1; + for(int i = digits.size() - 1; i >= 0; --i) { + int add = digits[i] + carry; + digits[i] = add % 10; + carry = add / 10; + } + if(carry > 0) { + digits.insert(digits.begin(), carry); + } + return digits; + } +}; \ No newline at end of file diff --git a/Problems/LeetcodeProblems/88-merge-sorted-array.h b/Problems/LeetcodeProblems/88-merge-sorted-array.h new file mode 100644 index 0000000..19e222e --- /dev/null +++ b/Problems/LeetcodeProblems/88-merge-sorted-array.h @@ -0,0 +1,20 @@ +class Solution { +public: + void merge(vector& nums1, int m, vector& nums2, int n) { + int i1 = m - 1, i2 = n - 1; + for(int i = m + n - 1; i >= 0; i--) { + if(i1 >= 0 && i2 < 0) + break; + if(i1 < 0 && i2 >= 0) { + nums1[i] = nums2[i2--]; + } + if(i1 >= 0 && i2 >= 0) { + if(nums1[i1] > nums2[i2]) { + nums1[i] = nums1[i1--]; + } else { + nums1[i] = nums2[i2--]; + } + } + } + } +}; \ No newline at end of file diff --git a/README.md b/README.md index 3a1168d..0b0a635 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,10 @@ * [1. Two Sum](Problems/LeetcodeProblems/1-two-sum.h) * [4. Median of Two Sorted Arrays](Problems/LeetcodeProblems/4-median-of-two-sorted-arrays.h) * [11. Container With Most Water](Problems/LeetcodeProblems/11-container-with-most-water.h) +* [26. Remove Duplicates from Sorted Array](Problems/LeetcodeProblems/26-remove-duplicates-from-sorted-array.h) * [53. Maximum Subarray](Problems/LeetcodeProblems/53-maximum-subarray.h) +* [66. Plus One](Problems/LeetcodeProblems/66-plus-one.h) +* [88. Merge Sorted Array](Problems/LeetcodeProblems/88-merge-sorted-array.h) * [121. Best Time to Buy and Sell Stock](Problems/LeetcodeProblems/121-best-time-to-buy-and-sell-stock.h) * [169. Majority Element](Problems/LeetcodeProblems/169-majority-element.h) * [283. Move Zeroes](Problems/LeetcodeProblems/283-move-zeroes.h)