地址:联系地址联系地址联系地址
电话:020-123456789
传真:020-123456789
邮箱:admin@aa.com
给你两个整数 num 和 k ,个位考虑具有以下属性的数字数正整数多重集 :
每个整数个位数字都是 k 。
所有整数之和是个位 num 。
返回该多重集的数字数最小大小,如果不存在这样的个位多重集,返回 -1 。数字数
注意:多重集与集合类似 ,个位但多重集可以包含多个同一整数 ,数字数空多重集的个位和为 0 。
个位数字 是数字数数字最右边的数位 。
示例 1:输入:num = 58,个位 k = 9 输出 :2
解释 :多重集 [9,49] 满足题目条件,和为 58 且每个整数的数字数个位数字是 9 。
另一个满足条件的个位多重集是 [19,39] 。
可以证明 2 是数字数满足题目条件的多重集的最小长度 。
示例 2 :输入:num = 37,个位 k = 2 输出 :-1
解释 :个位数字为 2 的整数无法相加得到 37 。
示例 3:输入:num = 0, k = 7 输出 :0
解释:空多重集的和为 0 。
提示 :0 <= num <= 3000
0 <= k <= 9
1 、枚举;时间复杂度O(n) ,空间复杂度O(1)
func minimumNumbers(num int, k int) int { n if num == 0 { n return 0n }n if k == 0 { n if num%10 == 0 { n return 1n }n return -1n }n if num%2 == 1 && k%2 == 0 { n return -1n }n for i := 1; i <= num; i++ { n sum := i * kn left := num - sumn if left%10 == 0 { n return in }n if left < 0 { n return -1n }n }n return -1n}
2、枚举;时间复杂度O(1),空间复杂度O(1)
func minimumNumbers(num int, k int) int { n if num == 0 { n return 0n }n for i := 1; i <= 10; i++ { n // 只考虑个位数n if i*k <= num && (i*k)%10 == num%10 { n return in }n }n return -1n}
Medium题目 ,找到规律枚举即可
地址:联系地址联系地址联系地址
电话:020-123456789
传真:020-123456789
邮箱:admin@aa.com
0.1884