【LeetCode每日一题】——258.各位相加

news2024/9/21 5:31:14

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【题目进阶】
  • 九【时间频度】
  • 十【代码实现】
  • 十一【提交结果】

一【题目类别】

  • 数学

二【题目难度】

  • 简单

三【题目编号】

  • 258.各位相加

四【题目描述】

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

五【题目示例】

  • 示例 1:

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

    • 输入: num = 0
    • 输出: 0

六【解题思路】

  • 方法一:
    • 正常模拟即可,当num还大于等于10的时候就需要将各位循环相加
    • 每次循环内只需要将每一位取出来相加
    • 然后赋值给num,准备做下一轮各位相加
    • 直到num小于10,变为1位数时结束循环
    • 最后返回结果即可
    • 此方法的时间复杂度为 O ( l o g n ) O(logn) O(logn),其中 n n n为传入参数的大小
  • 方法二:
    • 在这里简单介绍一下数根的概念:数根是将一正整数的各个位数相加(即横向相加),若加完后的值大于10的话,则继续将各位数进行横向相加直到其值小于十为止,或是,将一数字重复做数字和,直到其值小于十为止,则所得的值为该数的数根。本题就是要求一个数的数根
    • 当然,严谨的证明在这里并不做演示,此思想最重要的一点就是:num对9取模与其数根相等(特殊情况会在下面说明)
    • 我们需要知道其性质:
      • 0的数根是0
      • 当num是9的倍数时:数根就是9
      • 当num不是9的倍数时:数根就是num对9取模
    • 按照上方的过程就可以完成本题
    • 最后返回结果即可
    • 此方法的时间复杂度为 O ( 1 ) O(1) O(1)

七【题目提示】

  • 0 < = n u m < = 2 31 − 1 0 <= num <= 2^{31} - 1 0<=num<=2311

八【题目进阶】

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

九【时间频度】

  • 时间复杂度:
    • 方法一: O ( l o g n ) O(logn) O(logn),其中 n n n为传入参数的大小
    • 方法二: O ( 1 ) O(1) O(1)
  • 空间复杂度:
    • 方法一: O ( 1 ) O(1) O(1)
    • 方法二: O ( 1 ) O(1) O(1)

十【代码实现】

  1. Java语言版
class Solution {
    public int addDigits(int num) {
        while(num >= 10){
            int sum = 0;
            while(num > 0){
                sum += num % 10;
                num /= 10;
            }
            num = sum;
        }
        return num;
    }
}
  1. C语言版
int addDigits(int num)
{
    if(num == 0)
    {
        return 0;
    }
    else if(num % 9 == 0)
    {
        return 9;
    }
    else
    {
        return num % 9;
    }
}
  1. Python版
class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        if num == 1:
            return False
        res = 1
        i = 2
        while i * i <= num:
            if num % i == 0:
                res += i
                if i * i < num:
                    res += num / i
            i += 1
        return res == num

十一【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(coderwhy)- 01(介绍及基础)

React的介绍&#xff08;技术角度&#xff09; React是什么&#xff1f;React&#xff1a;用于构建用户界面的 JavaScript 库React的官网文档&#xff1a;https://zh-hans.reactjs.org/React的特点&#xff1a; 声明式编程组件化开发多平台适配Hello React react需要3个依赖&am…

最近蛮多应届生问,刚出来怎么找工作,我实在难以启齿......

前言 不知道什么情况&#xff0c;近几个月&#xff0c;好多兄弟朋友有在问我&#xff0c;关于应届生刚出来找工作的事儿。 可以看到标题&#xff0c; ‘难以启齿’ 这四个字大家应该都很少看到了吧。 因为很多兄弟问这个事情&#xff0c;我决定悄悄地发出来&#xff0c;把 我…

域名批量查询 到期未续费域名查询

域名的批量查询&#xff0c;指用户可以一次性输入多个域名进行查询&#xff0c;这样可以节省很多查询时间&#xff0c;例如你需要查询iis7这个关键词相关的域名在全球的注册情况 你完全可以使用域名批量查询工具。 最近入职了一家SEO公司&#xff0c;接手管理了110多个网站&am…

ARM指令

目录 1.指令格式 2.条件&#xff08;cond字段&#xff09; 3.指令助记符 4.寄存器 1.指令格式 基本格式 <opcode>{<cond>}{S} <Rd>,<Rn>{,<opcode2>} 一共6部分 其中&#xff0c;<>内的项是必须的&#xff0c;{}内的项是可选的&#…

【整型提升问题】

整型提升是什么&#xff1f; 整型提升的规则整型提升的存在 整型提升&#xff1a; 在计算机中&#xff0c;一个数据的类型如果是char 类型&#xff0c;以整型的形式打印该char类型的值时&#xff0c;会自动转换成整型&#xff0c;叫做整型提升。 整型提升的规则&#xff1a…

LeetCode 力扣 2042. 检查句子中的数字是否递增 areNumbersAscending

大家觉得写还可以&#xff0c;可以点赞、收藏、关注一下吧&#xff01; 也可以到我的个人博客参观一下&#xff0c;估计近几年都会一直更新&#xff01;和我做个朋友吧&#xff01;https://motongxue.cn 文章目录2042. 检查句子中的数字是否递增题目描述示例 1&#xff1a;示例…

分享一套微信门户应用管理系统源码 微信公众号平台开发框架源码

微信门户开发框架源码 微信公众号平台开发框架源码 源码分享&#xff0c;需要源码学习可私信我获取。 微信门户应用管理系统&#xff0c;采用基于 MVC Bootstrap Ajax Enterprise Library的技术路线&#xff0c;界面层采用Boostrap Metronic组合的前端框架&#xff0c;数…

新浪l2接口委托撤单是如何用c++实现的?

今天要和大家分享的是新浪l2接口委托撤单&#xff0c;那么接下来小编分享的是它的C实现代码&#xff01; // 委托撤单 // exchangeId: 0>深证(东兴证券是A0, 招商证券普通账户是2) // 1>上证 typedef void (*CancelOrderProc)(int clientId, const char …

录屏怎么录,试试这三个电脑录屏方法

录屏是当前最常用的功能&#xff0c;它可以帮助我们将喜爱的视频片段、线上会议&#xff0c;网络课程以及不能被下载的视频都给录制下来。电脑录屏怎么录&#xff1f;我们可以用电脑自带的录屏工具&#xff0c;或者使用第三方专业的电脑录屏软件来录制。下面小编就给大家分享3个…

2023年机器人与人工智能国际会议(JCRAI 2023)

2023年机器人与人工智能国际会议&#xff08;JCRAI 2023&#xff09; 重要信息 会议网址&#xff1a;www.jcrai.org 会议时间&#xff1a;2023年7月7-9日 召开地点&#xff1a;中国上海 截稿时间&#xff1a;2023年5月20日 录用通知&#xff1a;投稿后2周内 收录检索&am…

异常机制与体系

目录 一、传统的错误处理机制 二、异常概念 三、异常的使用 3.1 抛出与捕获 3.1.1 异常的抛出和匹配原则 3.1.2 在函数调用链中异常栈展开匹配原则 3.2 重新抛出 3.3 异常安全 3.4 异常规范 四、自定义异常体系 五、标准库的异常体系 六、异常的优缺点 6.1 优点 …

第三十三讲:神州三层交换机远程管理

1、三层交换机带外管理&#xff1a; CS6200-28X-EI>ena CS6200-28X-EI#conf CS6200-28X-EI(config)#username dcn privilege 15 password 0 123456 CS6200-28X-EI(config)#enable password 789 CS6200-28X-EI(config)#authentication line console login local CS6200…

Java多线程join()方法

Java多线程join()方法 一、概述 1、join():等待这个线程死亡&#xff0c;相当于join(0)。 2、join(int n) &#xff1a;最多等待n毫秒之后在处理 -2.1、join的时间 < sleep的时间&#xff0c;那么sleep就会停止&#xff0c;运行时间就是join的时间 -2.2、join的时间 > …

vue 2.x+webpack+cesium1.64详解(7):cesium事件详解

目录 cesium事件详解 一、屏幕空间事件处理程序&#xff08;Screen Space Event Handler&#xff09; 1.1、 屏幕空间事件类型&#xff1a;&#xff08;ScreenSpaceEventType&#xff09;鼠标事件 2.1、键盘修饰符类型&#xff08;KeyboardEventModifier&#xff09; 二、屏…

黑马Hive+Spark离线数仓工业项目-服务器性能监控Prometheus

监控需求及常见工具 目标&#xff1a;了解服务器性能监控需求及常见监控工具 路径 - step1&#xff1a;监控需求 - step2&#xff1a;常见工具 实施 监控需求 - 问题&#xff1a;数据量越来越大&#xff0c;机器数量越来越多&#xff0c;如何保证所有服务器稳定的的运行&a…

【EHub_tx1_tx2_E100】 ROS_ Melodic + Astra S(如何在该环境下打开摄像机获取rgb/深度图/点云)

简介&#xff1a;介绍奥比中光 Astra S 深度相机 在EHub_tx1_tx2_E100载板&#xff0c;TX1核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开摄像头RGB图像和查看深度图和点云图&#xff0c;本文的前提条件是你的TX1里已经安装了ROS版本&#xff…

CAN 通信协议

CAN 概述 CAN 是Controller Area Network 的缩写&#xff08;以下称为CAN&#xff09;&#xff0c;它的设计目标是以最小的CPU负荷来高效处理大量的报文。1986 年德国电气商BOSCH公司开发出面向汽车的CAN 通信协议。此后&#xff0c;CAN 通过ISO11898 及ISO11519 进行了标准化…

Vue 实现拖拽模块(五) - 下 预览元件

上文介绍了 定义元件的触发事件(上) 的简单实现 本文主要介绍了预览元件数据&#xff0c;并根据配置事件去触发逻辑&#xff0c;具体如下&#xff1a; 效果图 实现过程 创建预览页面 (元件配置和预览并不是同一个页面)预览页面使用 localStorage 缓存获取保存的元件数据&…

网络编程看这一篇文章就够了

第一章 网络编程概述 网络编程概述1 2 3Java语言提供了网络的支持,程序员能够很容易的开发常见的网络应用.Java提供的类库,可以实现无痛的网络连接,联网的底层细节被隐藏在安装Java本机系统里.由JVM进行控制.并且Java实现了一个跨平台的网络库.网络编程的目的1直接或间接地通过…

SQL Server注入技巧与提权方式详解

目录 前言 一、SQL Server基础 1. SQL Server 2012安装启动 navicat远程连接 2. SQL Server概念 数据库的组成 数据库中常用对象 默认库介绍 3. T-SQL语言 创建数据库 创建表 插入数据 基础语法总结 4. sqlserver权限 新建用户并赋予权限 权限总结 二、Sqlser…