- 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 herereturn a + b}
利用位运算符
^&``<<计算
func Aplusb(a int, b int) int {// write your code herec := ad := bfor d != 0{a = cb = dc = a ^ bd = 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 hereres := int64(0)for n > 0 {n /= 5res += 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 herecount := 0strK := 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] = 1pugly2, pugly3, pugly5 := 0, 0, 0i := 1for i < n {curUgly := min(min(uglies[pugly2]*2, uglies[pugly3]*3), uglies[pugly5]*5)uglies[i] = curUglyfor 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 heresort.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 hereres := make([]int, len(a)+len(b))ptrA, ptrB := 0, 0index := 0for 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 herea = 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 hereif 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
