Add solution 1600, change dir 0167、0303、0304、0307、0653、1017

This commit is contained in:
YDZ
2021-06-20 13:44:46 +08:00
parent fe99f9d7d5
commit c28e1c0267
39 changed files with 758 additions and 416 deletions

View File

@ -0,0 +1,20 @@
package leetcode
import "strconv"
func baseNeg2(N int) string {
if N == 0 {
return "0"
}
res := ""
for N != 0 {
remainder := N % (-2)
N = N / (-2)
if remainder < 0 {
remainder += 2
N++
}
res = strconv.Itoa(remainder) + res
}
return res
}

View File

@ -0,0 +1,52 @@
package leetcode
import (
"fmt"
"testing"
)
type question1017 struct {
para1017
ans1017
}
// para 是参数
// one 代表第一个参数
type para1017 struct {
one int
}
// ans 是答案
// one 代表第一个答案
type ans1017 struct {
one string
}
func Test_Problem1017(t *testing.T) {
qs := []question1017{
{
para1017{2},
ans1017{"110"},
},
{
para1017{3},
ans1017{"111"},
},
{
para1017{4},
ans1017{"110"},
},
}
fmt.Printf("------------------------Leetcode Problem 1017------------------------\n")
for _, q := range qs {
_, p := q.ans1017, q.para1017
fmt.Printf("【input】:%v 【output】:%v\n", p, baseNeg2(p.one))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,47 @@
# [1017. Convert to Base -2](https://leetcode.com/problems/convert-to-base-2/)
## 题目
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:**
1. `0 <= N <= 10^9`
## 题目大意
给出数字 N返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制base -2表示。除非字符串就是 "0",否则返回的字符串中不能含有前导零。
提示:
- 0 <= N <= 10^9
## 解题思路
- 给出一个十进制的数,要求转换成 -2 进制的数
- 这一题仿造十进制转二进制的思路,短除法即可。