LeetCode每日一题(2310. Sum of Numbers With Units Digit K)

Given two integers num and k, consider a set of positive integers with the following properties:

The units digit of each integer is k.
The sum of the integers is num.
Return the minimum possible size of such a set, or -1 if no such set exists.

Note:

The set can contain multiple instances of the same integer, and the sum of an empty set is considered 0.
The units digit of a number is the rightmost digit of the number.

Example 1:

Input: num = 58, k = 9
Output: 2

Explanation:
One valid set is [9,49], as the sum is 58 and each integer has a units digit of 9.
Another valid set is [19,39].
It can be shown that 2 is the minimum possible size of a valid set.

Example 2:

Input: num = 37, k = 2
Output: -1

Explanation: It is not possible to obtain a sum of 37 using only integers that have a units digit of 2.

Example 3:

Input: num = 0, k = 7
Output: 0

Explanation: The sum of an empty set is considered 0.

Constraints:

  • 0 <= num <= 3000
  • 0 <= k <= 9

个位数字只能是0-9, 我们用k分别乘以1-10来看有没有能跟num的个位数字吻合的,之所以是1到10, 是因为系数为0的情况只有num为0时才成立,我们可以提前做检查, 而实际num个位数字为0的情况(排除掉num为0的情况), 我们需要乘以10来做检查。如果i * k % 10 == num % 10, 那我们只需要检查i * k是不是小于等于num就可以了。


impl Solution {
    pub fn minimum_numbers(num: i32, k: i32) -> i32 {
        if num == 0 {
            return 0;
        }
        let units_digit = num % 10;
        for i in 1..=10 {
            if k * i % 10 == units_digit {
                if num - k * i >= 0 {
                    return i;
                }
            }
        }
        -1
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值