From 871e768972dd9be613f792f4d6e7a4dd8047cec8 Mon Sep 17 00:00:00 2001 From: Sorokin Igor <34890417+srk1nn@users.noreply.github.com> Date: Wed, 31 Aug 2022 12:30:50 +0300 Subject: [PATCH 1/4] [Search] add solution for Guess Number Higher or Lower --- Search/GuessNumberHigherOrLower.swift | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Search/GuessNumberHigherOrLower.swift diff --git a/Search/GuessNumberHigherOrLower.swift b/Search/GuessNumberHigherOrLower.swift new file mode 100644 index 00000000..a7326a0c --- /dev/null +++ b/Search/GuessNumberHigherOrLower.swift @@ -0,0 +1,34 @@ +/** + * Question Link: https://leetcode.com/problems/guess-number-higher-or-lower/ + * Primary idea: use binary search to find number + * Time Complexity: O(logn), Space Complexity: O(1) + * + * Forward declaration of guess API. + * @param num -> your guess number + * @return -1 if num is higher than the picked number + * 1 if num is lower than the picked number + * otherwise return 0 + * func guess(_ num: Int) -> Int + */ + +class Solution { + func guessNumber(_ n: Int) -> Int { + var start = 1 + var end = n + + while start <= end { + let mid = start + (end - start) / 2 + let isGuessed = guess(mid) + + if isGuessed == 0 { + return mid + } else if isGuessed == -1 { + end = mid - 1 + } else { + start = mid + 1 + } + } + + return -1 + } +} From 376a0d3ff9cb88c34578f7742ebf7b36ea81fde1 Mon Sep 17 00:00:00 2001 From: Sorokin Igor <34890417+srk1nn@users.noreply.github.com> Date: Wed, 31 Aug 2022 12:31:40 +0300 Subject: [PATCH 2/4] [Search] fix code style --- Search/GuessNumberHigherOrLower.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Search/GuessNumberHigherOrLower.swift b/Search/GuessNumberHigherOrLower.swift index a7326a0c..a8671819 100644 --- a/Search/GuessNumberHigherOrLower.swift +++ b/Search/GuessNumberHigherOrLower.swift @@ -5,7 +5,7 @@ * * Forward declaration of guess API. * @param num -> your guess number - * @return -1 if num is higher than the picked number + * @return -1 if num is higher than the picked number * 1 if num is lower than the picked number * otherwise return 0 * func guess(_ num: Int) -> Int From 0c44894643d18f0d9452663bfce14b9e8fd3f6f6 Mon Sep 17 00:00:00 2001 From: Sorokin Igor <34890417+srk1nn@users.noreply.github.com> Date: Wed, 31 Aug 2022 12:35:05 +0300 Subject: [PATCH 3/4] [Search] update read me --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 041058e6..1a7c53c4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![Leetcode](./logo.png?style=centerme) ## Progress -[Problem Status](#problem-status) shows the latest progress to all 1000+ questions. Currently we have 323 completed solutions. Note: questions with ♥ mark means that you have to **Subscript to premium membership** of LeetCode to unlock them. +[Problem Status](#problem-status) shows the latest progress to all 1000+ questions. Currently we have 324 completed solutions. Note: questions with ♥ mark means that you have to **Subscript to premium membership** of LeetCode to unlock them. ## Contributors @@ -369,6 +369,7 @@ [Sqrt(x)](https://leetcode.com/problems/sqrtx/)| [Swift](./Search/Sqrtx.swift)| Medium| O(logn)| O(1)| [Median of Two Sorted Arrays](https://leetcode.com/problems/median-of-two-sorted-arrays/)| [Swift](./Search/MedianTwoSortedArrays.swift)| Hard| O(log(m + n))| O(1)| [Minimize Max Distance to Gas Station](https://leetcode.com/problems/minimize-max-distance-to-gas-station/)| [Swift](./Search/MinimizeMaxDistanceGasStation.swift)| Hard| O(nlogm)| O(1)| +[Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/)| [Swift](./Search/GuessNumberHigherOrLower.swift)| Easy| O(logn)| O(1)| ## Sort | Title | Solution | Difficulty | Time | Space | @@ -546,7 +547,7 @@ | [Swift](./DFS/CombinationSumIV.swift) | 377 | [Combination Sum IV](https://leetcode.com/problems/combination-sum-iv/) | Medium | | 376 | [Wiggle Subsequence](https://leetcode.com/problems/wiggle-subsequence/) | Medium | [Swift](./DP/GuessNumberHigherOrLowerII.swift) | 375 | [Guess Number Higher or Lower II](https://leetcode.com/problems/guess-number-higher-or-lower-ii/) | Medium -| | 374 | [Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) | Easy +| [Swift](./Search/GuessNumberHigherOrLower.swift) | 374 | [Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) | Easy | | 373 | [Find K Pairs with Smallest Sums](https://leetcode.com/problems/find-k-pairs-with-smallest-sums/) | Medium | [Swift](./Math/SuperPow.swift) | 372 | [Super Pow](https://leetcode.com/problems/super-pow/) | Medium | [Swift](./Math/SumTwoIntegers.swift) | 371 | [Sum of Two Integers](https://leetcode.com/problems/sum-of-two-integers/) | Easy From e38ab3a9f1b26d534021f91879a4ac4edfb9f740 Mon Sep 17 00:00:00 2001 From: Sorokin Igor <34890417+srk1nn@users.noreply.github.com> Date: Wed, 31 Aug 2022 12:39:19 +0300 Subject: [PATCH 4/4] [Search] update class name --- Search/GuessNumberHigherOrLower.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Search/GuessNumberHigherOrLower.swift b/Search/GuessNumberHigherOrLower.swift index a8671819..e7adc123 100644 --- a/Search/GuessNumberHigherOrLower.swift +++ b/Search/GuessNumberHigherOrLower.swift @@ -11,7 +11,7 @@ * func guess(_ num: Int) -> Int */ -class Solution { +class GuessNumberHigherOrLower { func guessNumber(_ n: Int) -> Int { var start = 1 var end = n