每日小奋斗
幸好我fmt包用得好
func hammingWeight(num uint32) int {
return strings.Count(fmt.Sprintf("%b", num), "1")
}
说实话,我只能想到这一种方法,顶多就是在数字1的寻找上多玩玩花样
这一题也不是很难,控制一下打印的数值小于10的n次方就可以
func printNumbers(n int) []int {
res := []int{}
for i := 1; i < int(math.Pow(10, float64(n))); i++ {
res = append(res, i)
}
return res
}
当然我写完之后觉得这个math.pow这样的函数用的不是非常好,因为可以看到涉及到太多的类型转换
func printNumbers(n int) []int {
res := []int{}
target := 1
for i := 1; i <= n; i++ {
target *= 10
}
fmt.Println(target)
for i := 1; i < target; i++ {
res = append(res, i)
}
return res
}
这个在提交的速度上确实快了很多
3.剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
func exchange(nums []int) []int {
// 头尾双指针的写法去写
start, end := 0, len(nums)-1
for start < end {
if nums[start]%2 == 0 && nums[end]%2 == 1 {
nums[start], nums[end] = nums[end], nums[start]
} else if nums[start]%2 == 1 {
start++
} else if nums[end]%2 == 0 {
end--
}
}
return nums
}
这道题可以用力大砖飞的方法去写,比如分辨将奇数和偶数摘出来,然后合并,但是我这次尝试了一下头尾双指针,第一二次接触了,确实很优雅