给定一个非负整数 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)相关推荐

  1. Java实现 LeetCode 258 各位相加

    258. 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由 ...

  2. LeetCode 258. 各位相加

    1. 题目 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 ...

  3. leetcode 258. 各位相加(Java版)

    题目 https://leetcode-cn.com/problems/add-digits/ 题解 方法一:双 while 常规解法.题目描述即思路,反复将各个位上的数字相加,直到结果为一位数,返回 ...

  4. leetcode算法练习 JavaScript实现

    leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...

  5. 力扣(LeetCode)258. 各位相加

    给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所 ...

  6. LeetCode 258 Add Digits

    leetcode 上做了一题比较有意思,记录一下,传送门:https://leetcode.com/problems/add-digits/description/ 题目意思是:给一个正整数a,让其个 ...

  7. 刷题汇总(一)leetcode 精选50题 JavaScript答案总结

    题目来源 腾讯精选练习(50 题) 信息更新时间:2019-3-11,因为要准备面前端,就用js做了遍来熟悉JavaScript这门语言,50道题均已提交通过. GitHub地址:https://gi ...

  8. leetcode 两数相加c++_167. 两数之和 II - 输入有序数组

    167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1和 index2,其中 index1必须小 ...

  9. 前端点滴(JS进阶)(三)---- JavaScript 两链一包

    前端点滴(JS进阶)(三)----倾尽所有 一.作用域链 1. 作用域的概念 2. 作用域链 二.面向对象编程 1. 知识回顾 2. 定义对象 (1)new 内置对象 (2)直接量语法 (3)Es5 ...

  10. Leetcode 415. 字符串相加

    难度:简单 频率:119 题目: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回. 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也 ...

最新文章

  1. python hashlib模块_python3 hashlib模块
  2. 本博客弃用,请移步http://ningios.com查看最新
  3. 大脑构造图与功能解析_解析地轨、隐藏轨推拉门及折叠门的构造做法,收藏学习...
  4. 浅谈:Android应用清理内存
  5. python diango 并发_python - django Model 并发写数据出现重复值
  6. 实战~~整个网络无法浏览,提示网络不存在或者尚未启动
  7. 谈谈button标签和input标签的区别
  8. es6 混合commjs_Webpack打包ES6和CommonJs混合React
  9. 将list中的数据组成用逗号分隔的字符串
  10. Android学习路线图
  11. 前端 html自动生成,前端工程化-自动生成页面
  12. css常用单位总结: px / em / rem / vw / vh / vmax / vmin
  13. 计算机主机的输出设备,计算机的输出设备有哪些呢?
  14. 用DEV-C++写一个走迷宫小游戏1.2最终版(完结,撒花)
  15. FreeRTOS临界区操作
  16. GTD时间管理法的五个步骤 用便签备忘录辅助完成高效时间管理
  17. 【课程复习】Java Web、框架及项目简单回顾
  18. 异步复位同步释放原理
  19. 学号20189220 2018-2019-2 《密码与安全新技术专题》第五周作业
  20. linux查询网卡是百兆还是千兆,查看网卡是百兆还是千兆

热门文章

  1. 第六章:如何在SpringBoot项目中使用拦截器
  2. Python 图形 GUI 库 pyqtgraph
  3. 【开发工具之eclipse】7、eclipse代码自动提示,eclipse设置代码自动提示
  4. elasticsearch-analysis-ik-1.10.0中文分词插件安装
  5. 8块钱搞定一个顶级域名 (全过程) B篇
  6. 创建variant二维数组
  7. libvpx在windows下的编译
  8. jq 给按钮添加方法_手机进行视频编辑的方法,原来如此简单,免费、高效、省心...
  9. Spring boot 2.4开启静态资源缓存
  10. JavaSE10:日期时间类、java比较器、System类、Math类、大数类