- 1 · A + B 问题">1 · A + B 问题
- 2 · 尾部的零">2 · 尾部的零
- 3 · 统计数字">3 · 统计数字
- 4 · 丑数 II">4 · 丑数 II
- 5 · 第k大元素">5 · 第k大元素
- 6 · 合并排序数组">6 · 合并排序数组
- 8 · 旋转字符数组">8 · 旋转字符数组
- 9 · Fizz Buzz 问题">9 · Fizz Buzz 问题
- 10 · 字符串的不同排列">10 · 字符串的不同排列
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
1 · A + B 问题
题目
:::info
给出两个整数 a
和 b
, 求他们的和并以整数(int)的形式返回。
:::
👋你不需要从标准输入流读入数据,只需要根据
aplusb
传入的两个参数 a 和 b,计算他们的和并返回就行。
样例
Input:
a = 1 b = 2
Output:
:::success
3
:::
Explain:
:::warning
a + b = 1 + 2 = 3
:::
Input:
a = -1 b = 1
Output:
:::success
0
:::
Explain:
:::warning
a + b = -1 + 1 = 0
:::
挑战
显然你可以直接返回 a + b,但是你是否可以挑战不这样做?(不使用
+
等算数运算符)
代码
使用
+
直接返回答案
func Aplusb(a int, b int) int {
// write your code here
return a + b
}
利用位运算符
^
&``<<
计算
func Aplusb(a int, b int) int {
// write your code here
c := a
d := b
for d != 0{
a = c
b = d
c = a ^ b
d = a & b << 1
}
return c
}
2 · 尾部的零
题目
:::info
给定一个整数 n
,计算出n!
中尾部零的个数。
:::
👋你算法的时间复杂度应为
样例
Input:
n = 5
Output:
:::success
1
:::
Explain:
:::warning
5! = 120,尾部的0有1个。
:::
Input:
n = 11
Output:
:::success
2
:::
Explain:
:::warning
11! = 39916800,尾部的0有2个。
:::
代码
func TrailingZeros(n int64) int64 {
// write your code here
res := int64(0)
for n > 0 {
n /= 5
res += n
}
return res
}
3 · 统计数字
题目
:::info
给定一个数字 k
,计算 k 在 0
到 n
中出现的次数,k
可能是 0 到 9 的一个值。
:::
👋
样例
Input:
k = 1 n = 1
Output:
:::success
1
:::
Explain:
:::warning
在[0, 1]
中,只有 1 中存在数字 1,故出现一次。
:::
Input:
k = 1 n = 12
Output:
:::success
5
:::
Explain:
:::warning
在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
中,1、10、11、12 中均出现了 1,其中 11 中出现了 2 次 1,故1出现 5 次。
:::
代码
import (
"fmt"
"strings"
)
func DigitCounts(k int, n int) int {
// write your code here
count := 0
strK := fmt.Sprintf("%d", k)
for i := 0; i <= n; i++ {
count += len(strings.Split(fmt.Sprintf("%d", i), strK)) - 1
}
return count
}
4 · 丑数 II
题目
:::info
如果一个数只有质数因子2
,3
,5
,那么这个数是一个丑数。
前10个丑数分别为 1, 2, 3, 4, 5, 6, 8, 9, 10, 12...
设计一个算法,找出第N个丑数。我们可以认为 1 也是一个丑数。
:::
👋
样例
Input:
n = 9
Output:
:::success
10
:::
Explain:
:::warning
[1,2,3,4,5,6,8,9,10,….],第9个丑数为10。
:::
Input:
n = 1
Output:
:::success
1
:::
Explain:
:::warning
1是第一个丑数
:::
挑战
要求时间复杂度为 或者 。
代码
func NthUglyNumber(n int) int {
uglies := make([]int, n)
uglies[0] = 1
pugly2, pugly3, pugly5 := 0, 0, 0
i := 1
for i < n {
curUgly := min(min(uglies[pugly2]*2, uglies[pugly3]*3), uglies[pugly5]*5)
uglies[i] = curUgly
for uglies[pugly2]*2 <= curUgly {
pugly2++
}
for uglies[pugly3]*3 <= curUgly {
pugly3++
}
for uglies[pugly5]*5 <= curUgly {
pugly5++
}
i++
}
return uglies[n-1]
}
func min(x, y int) int {
if x < y {
return x
}
return y
}
5 · 第k大元素
题目
:::info 在数组中找到第 k 大的元素。 :::
👋你可以交换数组中的元素的位置。
样例
Input:
k = 1 nums = [1,3,4,2]
Output:
:::success
4
:::
Explain:
:::warning
第一大的元素是4。
:::
Input:
k = 3 nums = [9,3,2,4,8]
Output:
:::success
4
:::
Explain:
:::warning
第三大的元素是4。
:::
挑战
要求时间复杂度为,空间复杂度为。
代码
sort后返回
import (
"sort"
)
func KthLargestElement(k int, nums []int) int {
// write your code here
sort.Ints(nums)
return nums[len(nums)-k]
}
6 · 合并排序数组
题目
:::info 将按升序排序的整数数组A和B合并,新数组也需有序。 :::
样例
Input:
A = [1] B = [1]
Output:
:::success
[1,1]
:::
Explain:
:::warning
返回合并后的数组。
:::
Input:
A = [1,2,3,4] B = [2,4,5,6]
Output:
:::success
[1,2,2,3,4,4,5,6]
:::
Explain:
:::warning
合并两个数组,并使其有序
:::
挑战
如果一个数组很大,另一个数组很小,你将如何优化算法?
代码
双指针
func MergeSortedArray(a []int, b []int) []int {
// write your code here
res := make([]int, len(a)+len(b))
ptrA, ptrB := 0, 0
index := 0
for ptrA < len(a) && ptrB < len(b) {
if a[ptrA] < b[ptrB] {
res[index] = a[ptrA]
ptrA++
index++
} else {
res[index] = b[ptrB]
ptrB++
index++
}
}
for ptrA < len(a) {
res[index] = a[ptrA]
ptrA++
index++
}
for ptrB < len(b) {
res[index] = b[ptrB]
ptrB++
index++
}
return res
}
append后sort
import (
"sort"
)
func MergeSortedArray(a []int, b []int) []int {
// write your code here
a = append(a, b...)
sort.Ints(a)
return a
}
8 · 旋转字符数组
题目
:::info 给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转)。 :::
👋 offset >= 0 s 的长度 >= 0
原地旋转意味着需要在函数中更改字符数组 s。你不需要返回任何东西。
样例
Input:
s = “abcdefg” offset = 3
Output:
:::success
“efgabcd”
:::
Explain:
:::warning
“abcdefg” 向右旋转三个偏移量
—>"gabcdef"
—>"fgabcde"
—>"efgabcd"
:::
Input:
s = “abcdefg” offset = 0
Output:
:::success
“abcdefg”
:::
Explain:
:::warning
注意是原地旋转,即 s 旋转后为”abcdefg”
:::
Input:
s = “abcdefg” offset = 10
Output:
:::success
“efgabcd”
:::
Explain:
:::warning
offset对s的长度取模后,得3,向右偏移三个量为"efgabcd"
:::
代码
建立反转字符串的辅助函数
reverse()
,offset
对s
长度取余后,反转三次数组即可。
func RotateString(s []byte, offset int) {
// write your code here
if offset == 0 || len(s) == 0 {
return
}
offset %= len(s)
reverse(s, 0, len(s)-offset-1)
reverse(s, len(s)-offset, len(s)-1)
reverse(s, 0, len(s)-1)
}
func reverse(s []byte, left, right int) {
for left < right {
s[left], s[right] = s[right], s[left]
left++
right--
}
}
9 · Fizz Buzz 问题
题目
:::info
给定整数 n
,按照如下规则打印从 1
到 n
的每个数:
- 如果这个数被3整除,打印fizz。
- 如果这个数被5整除,打印buzz。
- 如果这个数能同时被3和5整除,打印fizz buzz。
- 如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。
:::
样例
Input:
n = 15
Output:
:::success
[ “1”, “2”, “fizz”, “4”, “buzz”, “fizz”, “7”, “8”, “fizz”, “buzz”, “11”, “fizz”, “13”, “14”, “fizz buzz” ]
:::
挑战
你是否可以只用一个
if
来实现?
代码
import "strconv"
func FizzBuzz(n int) []string {
if n == 0 {
return []string{}
}
str := make([]string, n)
for i := 1; i <= n; i++ {
switch {
case i%15 == 0:
str[i-1] = "fizz buzz"
case i%5 == 0:
str[i-1] = "buzz"
case i%3 == 0:
str[i-1] = "fizz"
default:
str[i-1] = strconv.Itoa(i)
}
}
return str
}
10 · 字符串的不同排列
题目
:::info 给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次。 :::
样例
Input:
s = “abb”
Output:
:::success
[“abb”, “bab”, “bba”]
:::
Explain:
:::warning
abb的全排列有6种,其中去重后还有3种。
:::
Input:
s = “aabb”
Output:
:::success
[“aabb”, “abab”, “baba”, “bbaa”, “abba”, “baab”]
:::
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning
挑战
代码
模板
题目
:::info
:::
👋
样例
Input:
Output:
:::success
:::
Explain:
:::warning
:::
Input:
Output:
:::success
:::
Explain:
:::warning