package com.fishercoder.solutions;

/**
 * 754. Reach a Number
 *
 * You are standing at position 0 on an infinite number line. There is a goal at position target.
 * On each move, you can either go left or right. During the n-th move (starting from 1), you take n steps.
 * Return the minimum number of steps required to reach the destination.

 Example 1:
 Input: target = 3
 Output: 2
 Explanation:
 On the first move we step from 0 to 1.
 On the second step we step from 1 to 3.

 Example 2:
 Input: target = 2
 Output: 3
 Explanation:
 On the first move we step from 0 to 1.
 On the second move we step  from 1 to -1.
 On the third move we step from -1 to 2.

 Note:
 target will be a non-zero integer in the range [-10^9, 10^9].
 */

public class _754 {
  public static class Solution1 {
    /**Two case:
     * 1. go to the right, and reach the goal exactly.
     * 2. go over the goal by several steps:
     *    by even number, then you can choose one of the steps that went right to go back to the left (the step is half of what you went over)
     *    by odd number, then you keep going until you are over by an even number.*/
    public int reachNumber(int target) {
      int absTarget = Math.abs(target);
      int steps = 1;
      int sum = 0;
      while (sum < absTarget || (sum - absTarget) % 2 == 1) {
        sum += steps;
        steps++;
      }
      return steps - 1;
    }
  }
}

@@ -33,773 +33,87 @@
 s;%0A%0A
-/**%0A * 754. Reach a Number%0A *%0A * You are standing at position 0 on an infinite number line. There is a goal at position target.%0A * On each move, you can either go left or right. During the n-th move (starting from 1), you take n steps.%0A * Return the minimum number of steps required to reach the destination.%0A%0A Example 1:%0A Input: target = 3%0A Output: 2%0A Explanation:%0A On the first move we step from 0 to 1.%0A On the second step we step from 1 to 3.%0A%0A Example 2:%0A Input: target = 2%0A Output: 3%0A Explanation:%0A On the first move we step from 0 to 1.%0A On the second move we step  from 1 to -1.%0A On the third move we step from -1 to 2.%0A%0A Note:%0A target will be a non-zero integer in the range %5B-10%5E9, 10%5E9%5D.%0A */%0A%0Apublic class _754 %7B%0A  public static class Solution1 %7B%0A    /**
+public class _754 %7B%0A    public static class Solution1 %7B%0A        /**%0A         * 
 Two 
@@ -118,16 +118,20 @@
 o case:%0A
+    
      * 1
@@ -182,16 +182,20 @@
 y.%0A     
+ 
+   
 * 2. go 
@@ -227,28 +227,29 @@
 steps:%0A     
-*
+ 
    
+*
  by even num
@@ -379,12 +379,13 @@
     
-*
+ 
    
+*
  by 
@@ -457,11 +457,25 @@
 ber.
+%0A         
 */%0A
+    
     
@@ -513,24 +513,30 @@
 et) %7B%0A      
+  
+    
 int absTarge
@@ -559,24 +559,30 @@
 get);%0A      
+  
+    
 int steps = 
@@ -586,24 +586,30 @@
  = 1;%0A      
+   
+   
 int sum = 0;
@@ -615,16 +615,22 @@
 ;%0A      
+   
+   
 while (s
@@ -673,24 +673,32 @@
 %25 2 == 1) %7B%0A
+        
         sum 
@@ -715,16 +715,24 @@
         
+ 
+       
 steps++;
@@ -736,16 +736,22 @@
 ++;%0A
+      
       %7D%0A
     
@@ -746,16 +746,22 @@
       %7D%0A
+      
       re
@@ -780,16 +780,22 @@
  1;%0A    
-%7D%0A
+    %7D%0A  
   %7D%0A%7D%0A

refactor 754