返回介绍

solution / 0200-0299 / 0258.Add Digits / README

发布于 2024-06-17 01:04:02 字数 2112 浏览 0 评论 0 收藏 0

258. 各位相加

English Version

题目描述

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

 

示例 1:

输入: num = 38
输出: 2 
解释: 各位相加的过程为38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。

示例 2:

输入: num = 0
输出: 0

 

提示:

  • 0 <= num <= 231 - 1

 

进阶:你可以不使用循环或者递归,在 O(1) 时间复杂度内解决这个问题吗?

解法

方法一

class Solution:
  def addDigits(self, num: int) -> int:
    return 0 if num == 0 else (num - 1) % 9 + 1
class Solution {
  public int addDigits(int num) {
    return (num - 1) % 9 + 1;
  }
}
class Solution {
public:
  int addDigits(int num) {
    return (num - 1) % 9 + 1;
  }
};
func addDigits(num int) int {
  if num == 0 {
    return 0
  }
  return (num-1)%9 + 1
}
impl Solution {
  pub fn add_digits(num: i32) -> i32 {
    if num < 10 {
      return num;
    }
    Self::add_digits(
      num
        .to_string()
        .chars()
        .map(|c| c.to_string().parse::<i32>().unwrap())
        .sum::<i32>()
    )
  }
}

方法二

impl Solution {
  pub fn add_digits(mut num: i32) -> i32 {
    ((num - 1) % 9) + 1
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文