【2022】小米秋招笔试-运维开发-卷2
【大白兔奶糖取法】(爬楼梯 动态规划)
【大白兔奶糖取法】
问题描述:
假设你有n个大白兔奶糖,每次最多拿走一个或者两个,你有多少种不同的方法拿完全部的大白兔奶糖?(注意求解方法的时间复杂度)
输入描述:
大白兔奶糖的个数n (1<=n<=50)
输出描述:
拿完全部的大白兔奶糖的方法数
输入样例:
2
输出样例:
2
go
func climbStairs(n int) int {
dp := make([]int,n+1)
dp[0] = 1 // 拿一个
dp[1] = 1 // 拿两个
for i := 2; i < len(dp); i ++ {
dp[i] = dp[i-1] + dp[i-2]
}
return dp[n]
}
爬楼梯 动态规划问题
【 跳方格游戏】(Leetcode 45. 跳跃游戏 II 贪心算法)
【 跳方格游戏】
问题描述:
小米公司在中秋节会有玩游戏领奖品的团队活动,增加部门凝聚力,其中今年中秋有一个游戏是这样的: 由游戏组织者在地上画一列竖排的方格,其中每个单独的方格上都标注着一个非负整数,==一开始你位于方格的起始位置,每一个方格的数字代 表你从该位置开始可以跳跃的最大方格数。你的目标是需要用最少的跳跃次数来达到最后一个方格。最少跳跃次数的同学可以赢得中秋小礼 品。
其中一列的方格对应使用非负整数列表表示;起始位置为数组下标0的位置;假设你总是可以跳到数组的最后一个位置。
输入描述:
1
非负整数列表nums(1 <= nums.length <= 10^4, 0 <= nums[i] <= 1000),表示对应方格数字
输出描述:
1
跳到最后一个方格的最小跳跃次数
输入样例:
1
[3, 2, 5, 4, 7]
输出样例:
1
2
golang
func res(nums []int) int {
n := len(nums)
end := 0
maxPostion := 0
steps := 0
for i := 0; i < n-1; i++ {
maxPostion = max(nums[i]+i,maxPostion)
if i == end {
end = max
steps++
}
}
return steps
}
func max(a,b int) int {
if a > b {
return a
}else {
return b
}
}