(进阶)LeetCode(258)——各位相加(JavaScript)
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?
/*** @param {number} num* @return {number}*/
var addDigits = function(num) {};
个人解法
var addDigits = function(num) {var result = 0;//num各位相加while(num !== 0){result += num % 10;num = Math.floor(num / 10);}//如果result大于10则递归调用while(result >= 10){result = addDigits(result);}return result;
};
进阶解法
大佬思路:假如一个三位数abc
,其值大小为s1 = 100 * a + 10 * b + 1 * c
,经过一次各位相加后,变为s2 = a + b + c
,减小的差值为(s1 -s2) = 99 * a + 9 * b
,差值可以被9整除,因此每一次各位相加都这样,缩小了9的倍数。
- 因此当
num <= 9
时,因为num
只有一位,所以直接返回num
, num > 9
时,如果能被9整除,则返回9(因为不可能返回0也不可能返回两位数及以上的值),如果不能被整除,就返回被9除的余数。
var addDigits = function(num) {if(num <= 9){return num;}else if(num % 9 === 0){return 9;}else{return num % 9;}};
(进阶)LeetCode(258)——各位相加(JavaScript)相关推荐
- Java实现 LeetCode 258 各位相加
258. 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由 ...
- LeetCode 258. 各位相加
1. 题目 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 ...
- leetcode 258. 各位相加(Java版)
题目 https://leetcode-cn.com/problems/add-digits/ 题解 方法一:双 while 常规解法.题目描述即思路,反复将各个位上的数字相加,直到结果为一位数,返回 ...
- leetcode算法练习 JavaScript实现
leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...
- 力扣(LeetCode)258. 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所 ...
- LeetCode 258 Add Digits
leetcode 上做了一题比较有意思,记录一下,传送门:https://leetcode.com/problems/add-digits/description/ 题目意思是:给一个正整数a,让其个 ...
- 刷题汇总(一)leetcode 精选50题 JavaScript答案总结
题目来源 腾讯精选练习(50 题) 信息更新时间:2019-3-11,因为要准备面前端,就用js做了遍来熟悉JavaScript这门语言,50道题均已提交通过. GitHub地址:https://gi ...
- leetcode 两数相加c++_167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1和 index2,其中 index1必须小 ...
- 前端点滴(JS进阶)(三)---- JavaScript 两链一包
前端点滴(JS进阶)(三)----倾尽所有 一.作用域链 1. 作用域的概念 2. 作用域链 二.面向对象编程 1. 知识回顾 2. 定义对象 (1)new 内置对象 (2)直接量语法 (3)Es5 ...
- Leetcode 415. 字符串相加
难度:简单 频率:119 题目: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回. 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也 ...
最新文章
- python hashlib模块_python3 hashlib模块
- 本博客弃用,请移步http://ningios.com查看最新
- 大脑构造图与功能解析_解析地轨、隐藏轨推拉门及折叠门的构造做法,收藏学习...
- 浅谈:Android应用清理内存
- python diango 并发_python - django Model 并发写数据出现重复值
- 实战~~整个网络无法浏览,提示网络不存在或者尚未启动
- 谈谈button标签和input标签的区别
- es6 混合commjs_Webpack打包ES6和CommonJs混合React
- 将list中的数据组成用逗号分隔的字符串
- Android学习路线图
- 前端 html自动生成,前端工程化-自动生成页面
- css常用单位总结: px / em / rem / vw / vh / vmax / vmin
- 计算机主机的输出设备,计算机的输出设备有哪些呢?
- 用DEV-C++写一个走迷宫小游戏1.2最终版(完结,撒花)
- FreeRTOS临界区操作
- GTD时间管理法的五个步骤 用便签备忘录辅助完成高效时间管理
- 【课程复习】Java Web、框架及项目简单回顾
- 异步复位同步释放原理
- 学号20189220 2018-2019-2 《密码与安全新技术专题》第五周作业
- linux查询网卡是百兆还是千兆,查看网卡是百兆还是千兆
热门文章
- 第六章:如何在SpringBoot项目中使用拦截器
- Python 图形 GUI 库 pyqtgraph
- 【开发工具之eclipse】7、eclipse代码自动提示,eclipse设置代码自动提示
- elasticsearch-analysis-ik-1.10.0中文分词插件安装
- 8块钱搞定一个顶级域名 (全过程) B篇
- 创建variant二维数组
- libvpx在windows下的编译
- jq 给按钮添加方法_手机进行视频编辑的方法,原来如此简单,免费、高效、省心...
- Spring boot 2.4开启静态资源缓存
- JavaSE10:日期时间类、java比较器、System类、Math类、大数类