Leetcode: Convert to Base -2

Convert to Base -2



Similar Problems:


Given a number N, return a string consisting of “0”s and “1”s that represents its value in base -2 (negative two).

The returned string must have no leading zeroes, unless the string is “0”.

Example 1:

Input: 2
Output: "110"
Explantion: (-2) ^ 2 + (-2) ^ 1 = 2

Example 2:

Input: 3
Output: "111"
Explantion: (-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3

Example 3:

Input: 4
Output: "100"
Explantion: (-2) ^ 2 = 4

Note:

  • 0 <= N <= 10^9

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


  • Solution:
// Blog link: https://code.dennyzhang.com/convert-to-base-2
// Basic Ideas:
//
// base * value + reminder = old
//   0 <= reminder < abs(base)
//
// Complexity: Time O(log(n)), Space O(log(n))
import "strconv"
func baseNeg2(N int) string {
    // corner case
    if N == 0 { return "0" }
    res := ""
    for N != 0 {
        reminder := N%(-2)
        N = N/(-2)
        if reminder < 0 {
            reminder += 2
            N += 1
        }
        res = strconv.Itoa(reminder) + res
    }
    return res
}
linkedin
github
slack

Share It, If You Like It.

Leave a Reply

Your email address will not be published.