【LeetCode】258. 各位相加

258. 各位相加

难度:简单

题目

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

示例 1:

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

示例 2:

输入: num = 0
输出: 0

提示:

  • 0 <= num <= 2^31 - 1

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

个人题解

方法一:打表法

思路:

  1. 显然,由题目可知,这是一道找规律的题目
  2. 先编写不管复杂度的程序,将10000以下对应的的答案打印出来,观察规律
public class Main {public static void main(String[] args) {Main main = new Main();for (int i = 0; i < 10000; i++) {System.out.println(main.addDigits(i) + " " + i);}}public int addDigits(int num) {while (num >= 10) {int sum = 0;while (num >= 10) {sum += num % 10;num /= 10;}num = sum + num;}return num;}}

观察输出,除了小于 10 的数,后面数字都是一直从 1~9 逐位递增,观察规律,当能被 9 整除时,对应答案是 9,否则是 除以9 的余数,则编写以下代码:

class Solution {public int addDigits(int num) {if (num < 10) {return num;}return num % 9 == 0 ? 9 : num % 9;}
}

复杂度分析

  • 时间复杂度:O(1)
  • 空间复杂度:O(1)

官方题解

方法一:模拟

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;}
}

复杂度分析

  • 时间复杂度:O(log num)
  • 空间复杂度:O(1)

方法二:数学

从数学角度分析答题,题解字数很多,本人不想看,想看的可直接点击后面链接查看

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

复杂度分析

  • 时间复杂度:O(1)
  • 空间复杂度:O(1)

作者:力扣官方题解
链接:https://leetcode.cn/problems/add-digits/solutions/1301157/ge-wei-xiang-jia-by-leetcode-solution-u4kj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

数树问题(桶排序)

某校大门外长度为L的马路上有一排树&#xff0c;每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴&#xff0c;马路的一端在数轴0的位置&#xff0c;另一端在L的位置&#xff1b;数轴上的每个整数点&#xff0c;即0&#xff0c;1&#xff0c;2&#xff0c;……&am…

nginx遇到的问题和jks密码问题

1&#xff1a;nginx的配置&#xff1a; https 一定得配置 8080 ssl (我没有配置这个) 2&#xff1a;查看jks的密码 keytool -list -keystore secms.jks 让输入密码

锂电分切机常见故障及预测性维护解决方案

锂电分切机是电池生产线上不可或缺的设备&#xff0c;通过切割锂电池以满足不同应用需求。但在实际生产的使用过程中&#xff0c;常常会遇到一些故障&#xff0c;影响设备的正常运行和生产效率。为了减少这些故障对设备的影响&#xff0c;预测性维护成为制造商需要重视的解决方…

Linux动态库常见问题

1.编译好库后&#xff0c;应用程序调用&#xff0c;路径明明写对了&#xff0c;但是编译的时候却显示xxx未定义 2.编译好了却说不能打开动态库&#xff0c;没有此文件 ./jrtplib_test: error while loading shared libraries: libjrtp.so.3.11.2: cannot open shared object f…

java面试题,上楼梯有多少种方式

java面试题&#xff0c;上楼梯有多少种方式 题目&#xff1a;一个小孩上一个N级台阶的楼梯&#xff0c;他可以一次走1阶、2阶或3阶&#xff0c;那么走完N阶有多少种方式。 很自然的想法是使用递归&#xff1a; public class Test04 { public static int countWays(int n) {…

python初始化矩阵相关

做算法题经常需要初始化一个二维的dp数组 下面两种方法是最常用的 matrix [[0]*n]*n matrix [[0]*n for _ in range(n)]以前经常混用也没发现什么问题&#xff0c;直到昨天debug的时候发现第一种初始化之后对矩阵进行赋值时混乱的&#xff0c;比如matrix[0][1]2会导致所有行…

C语言面试之旅:掌握基础,探索深度(面试实战之单片机——IO)

梦想和自由一样&#xff0c;都有代价&#xff0c;但都值得。 ----小新 引言 单片机是一种微控制器&#xff0c;它包含一个处理器、存储器、定时器和I/O端口等。I/O端口是单片机与外部设备进行通信的接口。通过I/O端口&#xff0c;外部设备可以输入和输出数据到单片机中。 在单…

西工大计算机学院计算机系统基础实验一(函数编写1~10)

还是那句话&#xff0c;千万不要慌&#xff0c;千万不要着急&#xff0c;耐下性子慢慢来&#xff0c;一步一个脚印&#xff0c;把基础打的牢牢的&#xff0c;一样不比那些人差。回到实验本身&#xff0c;自从​​​​​​按照西工大计算机学院计算机系统基础实验一&#xff08;…

YOLOv8改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制&#xff0c;它通过三个不同的视角来分析输入的数据&#xff0c;就好比三个人从不同的角度来观察同一幅画&#xff0c;然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

C陷阱与缺陷——第6章 预处理器

在严格意义上的编译过程开始之前&#xff0c;C语言预处理器首先对程序代码做了必要的转换处理。预处理器的主要作用是&#xff1a; 我们有时需要将某个特定数量在程序中出现的所有实例统统加以修改大多数C语言实现在函数调用时都会带来重大的系统开销 1. 不能忽视宏定义中的空…

基于Java停车场管理系统

功能需求 1、用户注册和登录&#xff1a;系统需要提供用户注册和登录的功能&#xff0c;使得用户可以创建账户并保护他们的个人信息。 2、车辆管理&#xff1a;能够记录并跟踪进出停车场的车辆信息&#xff0c;包括车牌号、车型、颜色等。 3、停车位管理&#xff1a;显示停车…

EPICS Base 和许多未捆绑的 EPICS 扩展和支持模块

针对物理实验的实验装置驱动操作 网址&#xff1a;https://epics-controls.org/epics-open-license/ 关于EPICS复杂系统 EPICS 是一套软件工具和应用程序&#xff0c;为建立分布式控制系统提供软件基础设施&#xff0c;用于操作粒子加速器、大型实验和大型望远镜等设备。这种…

Kontakt v7.7.2(音频采样器)

Native Instruments Kontakt 7是一款强大的软件采样器&#xff0c;它允许用户从各种来源采样音频并进行编辑和处理。它包含大量预设采样库&#xff0c;包括乐器、合成器、鼓组和声音效果等。此外&#xff0c;Kontakt 7还允许用户创建自己的采样库&#xff0c;以便根据自己的需要…

电脑版的便签软件使用哪一款?

您会选择使用电脑便签软件吗&#xff1f;很多人在日常工作及生活中会选择用电脑便签来督促自己按时完成工作任务&#xff0c;而且选择电脑便签是一个难题&#xff0c;毕竟当前电脑便签类工具非常多&#xff0c;如果想要找一款功能比较强大且又简单易用的便签工具&#xff0c;那…

HarmonyOS学习--创建和运行Hello World

创建和运行Hello World 打开DevEco Studio&#xff0c;在欢迎页单击Create Project&#xff0c;创建一个新工程。根据工程创建向导&#xff0c;选择创建Application应用或Atomic Service元服务。选择“Empty Ability”模板&#xff0c;然后单击Next。关于工程模板的介绍和支持…

A股股票交易费用

A股股票交易费用如下&#xff1a; 经手费&#xff1a;&#xff08;上证/深证&#xff09;按成交额双边收取0.0487‰&#xff0c;交给交易所。 监管费&#xff1a;&#xff08;深证&#xff09;按成交额双边收取0.02‰&#xff0c;交易所代收&#xff0c;交给证监会。 证管费&…

QGraphicsView实现简易地图7『异步加载-多瓦片-无底图』

前文链接&#xff1a;QGraphicsView实现简易地图6『异步加载-单瓦片-无底图』 前一篇文章提到的异步单瓦片加载&#xff0c;是指线程每准备好一个瓦片数据后&#xff0c;立刻抛出信号让主线程加载。而本篇异步多瓦片加载是指线程准备好所有瓦片数据后&#xff0c;一起抛出信号让…

将文件夹中所有文件名取出

dir C:\Users\是啊\Desktop\实验五/b>C:\Users\是啊\Desktop\1111.xls C:\Users\是啊\Desktop\实验五&#xff08;这个是文件夹路径&#xff09; /b &#xff08;参数&#xff09; C:\Users\是啊\Desktop\1111.xls&#xff08;文件名输出的文件路径&#xff09;

限流、熔断、降级、线程池隔离

文章目录 一、限流1.1 常见限流方式1.1.1 固定窗口、滑动窗口、漏斗、令牌桶1.1.2 令牌桶限流原理-公式 1.2Guava令牌桶使用方式1.3 其他限流流控规则配置阻塞类型突发流量限流并且拒绝流量请求&#xff0c;友好提示限流了 二、 熔断1.1 Thfirt熔断器 三、 线程池隔离3.1 背景3…

用VR+科普点亮科技之光VR航天科普体验巡展

11月22日至26日&#xff0c;第十一届中国(绵阳)科技城国际科技博览会圆满闭幕。本届科博会以“科技引领创新转化开放合作”为主题&#xff0c;创新办展办会模式&#xff0c;搭建高能级科技合作交流平台&#xff0c;展示了国内外科技创新发展成就和最新成果&#xff0c;举办了多…