aboutsummaryrefslogtreecommitdiff
path: root/reach_number.py
diff options
context:
space:
mode:
Diffstat (limited to 'reach_number.py')
-rw-r--r--reach_number.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/reach_number.py b/reach_number.py
new file mode 100644
index 0000000..de65fcd
--- /dev/null
+++ b/reach_number.py
@@ -0,0 +1,37 @@
+# 754. Reach a Number
+import math
+
+"""
+you are standing at position zero on an infinite number line. there is a
+destination at position 'target'. you can make some number of moves
+'numMoves' so that on each move you can either go left or right, during the
+i'th move starting from 'i == 1' to 'i == numMoves', you take 'i' steps in
+the chosen direction. given the integer 'target', return the minimum number
+of moves required to reach the destination
+"""
+
+
+class Solution(object):
+ def reachNumber(self, target):
+ """
+ :type target: int
+ :rtype: int
+ """
+ bound = math.ceil(math.sqrt(2 * abs(target) + 0.25) - 0.5)
+ if target % 2 == 0:
+ if bound % 4 == 1:
+ bound += 2
+ if bound % 4 == 2:
+ bound += 1
+ else:
+ if bound % 4 == 3:
+ bound += 2
+ if bound % 4 == 0:
+ bound += 1
+ return bound
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.reachNumber(2))
+ print(obj.reachNumber(3))