[LeetCode] Add Digits

数字累加问题的精简解决方案
本文介绍了一种简洁高效的解决数字累加问题的方法,通过观察规律并使用数学技巧,仅用一行代码即可实现从1到任意数的累加,并针对Python中负数取余的特殊情况进行了额外处理。

Well, if you have no idea of other methods, try to compue the result for all the numbers ranging from 1 to 20 and then you will see the regularity. After you find it, this problem just needs 1-line code.

I write the following code.

1 class Solution { 
2 public:
3     int addDigits(int num) {
4         return num - (num - 1) / 9 * 9; 
5     } 
6 };

This link writes anther more elegant one.

class Solution { 
public:
    int addDigits(int num) {
        return (num - 1) % 9 + 1; 
    } 
};

However, both of them cannot be used in Python since Python says that -1 % 9 = 8 and -1 / 9 = -1. Both the codes above will give a wrong answer for input 0. So you have to handle it separately.

1 class Solution:
2     # @param {integer} num 
3     # @return {integer}
4     def addDigits(self, num):
5         return (num - 1) % 9 + 1 if num else 0

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4734238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值