leetcode258. 各位相加(简单题,但是你不看答案想不出来)

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

示例:

输入: 38
输出: 2 
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

思路:我想的是给的int是有范围的,我就重复很多次即可。

class Solution {public int addDigits(int num) {num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;num = num % 10 + num / 10;return num;}
}

这是所谓正解,确实开阔了思路:

除了传统的单纯循环,还可以找规律。假如一个三位数'abc',其值大小为s1 = 100 * a + 10 * b + 1 * c,经过一次各位相加后,变为s2 = a + b + c,减小的差值为(s1 -s2) = 99 * a + 9 * b,差值可以被9整除,每一个循环都这样,缩小了9的倍数。当num小于9,即只有一位时,直接返回num,大于9时,如果能被9整除,则返回9(因为不可能返回0也不可能返回两位数及以上的值),如果不能被整除,就返回被9除的余数。

class Solution:def addDigits(self, num: int) -> int:if num > 9:num = num % 9if num == 0:return 9return num

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

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

相关文章

leetcode896. 单调数列

如果数组是单调递增或单调递减的&#xff0c;那么它是单调的。 如果对于所有 i < j&#xff0c;A[i] < A[j]&#xff0c;那么数组 A 是单调递增的。 如果对于所有 i < j&#xff0c;A[i]> A[j]&#xff0c;那么数组 A 是单调递减的。 当给定的数组 A 是单调数组…

leetcode884. 两句话中的不常见单词(你肯定会被惊呆了)

给定两个句子 A 和 B 。 &#xff08;句子是一串由空格分隔的单词。每个单词仅由小写字母组成。&#xff09; 如果一个单词在其中一个句子中只出现一次&#xff0c;在另一个句子中却没有出现&#xff0c;那么这个单词就是不常见的。 返回所有不常用单词的列表。 您可以按任何…

正则表达式必知必会

一、概述 正则表达式用于文本内容的查找和替换。 正则表达式内置于其它语言或者软件产品中&#xff0c;它本身不是一种语言或者软件。 正则表达式在线工具 二、匹配单个字符 . 可以用来匹配任何的单个字符&#xff0c;但是在绝大多数实现里面&#xff0c;不能匹配换行符&a…

leader:你的代码太烂了我根本看不懂

一、可读性的重要性 编程有很大一部分时间是在阅读代码&#xff0c;不仅要阅读自己的代码&#xff0c;而且要阅读别人的代码。因此&#xff0c;可读性良好的代码能够大大提高编程效率。 可读性良好的代码往往会让代码架构更好&#xff0c;因为程序员更愿意去修改这部分代码&a…

java写的MySQL数据库备份和恢复代码:

1.MySQL数据库备份和恢复&#xff0c;java代码实现&#xff1a;详情见下面&#xff1a; package com.spring.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExce…

leetcode541. 反转字符串 II(字符串一律用py秒杀)

给定一个字符串 s 和一个整数 k&#xff0c;你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个&#xff0c;则反转前 k 个字符&#xff0c;其余字符保持原样…

leetcode628. 三个数的最大乘积(简单,我觉得你不会)

给你一个整型数组 nums &#xff0c;在数组中找出由三个数组成的最大乘积&#xff0c;并输出这个乘积。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;6 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;24 示例 3&#xff1a; …

leetcode453. 最小操作次数使数组元素相等(贼难的简单题)

给定一个长度为 n 的 非空 整数数组&#xff0c;每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。 示例&#xff1a; 输入&#xff1a; [1,2,3] 输出&#xff1a; 3 解释&#xff1a; 只需要3次操作&#xff08;注意每次操作会增加两个元素的值&am…

leetcode设计链表,非常工整的实现你值得拥有

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性&#xff1a;val 和 next。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。如果要使用双向链表&#xff0c;则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所…

leetcode1669. 合并两个链表

给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中第 a 个节点到第 b 个节点删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果链表的头指针。 示例 1&#xff…

leetcode1721. 交换链表中的节点

给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后&#xff0c;返回链表的头节点&#xff08;链表 从 1 开始索引&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[1,4,3,2,5] 示例 2&…

《一天聊一个设计模式》 单例

我是兔兔rabbit&#xff0c;关注我吧&#xff0c;给自己每天的进步找一个机会和理由&#xff0c;不要被无效信息淹没 单例&#xff08;Singleton&#xff09; Intent 确保一个类只有一个实例&#xff0c;并提供该实例的全局访问点。 Class Diagram 使用一个私有构造函数、一…

Eclipse如何卸载插件

Help ---> About Eclipse -->Installation details--->选中你的插件-->Uninstall..

leetcode1502. 判断能否形成等差数列(小学生难度)

给你一个数字数组 arr 。 如果一个数列中&#xff0c;任意相邻两项的差总等于同一个常数&#xff0c;那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列&#xff0c;请返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#x…

leetcode1528. 重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s &#xff0c;其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1&#xff1a; 输入&#xff1a;s "codeleet", indices [4,5,6,7,0,2,1,3] 输出…

leetcode976. 三角形的最大周长(又是你得不到的简单题)

给定由一些正数&#xff08;代表长度&#xff09;组成的数组 A&#xff0c;返回由其中三个长度组成的、面积不为零的三角形的最大周长。 如果不能形成任何面积不为零的三角形&#xff0c;返回 0。 示例 1&#xff1a; 输入&#xff1a;[2,1,2] 输出&#xff1a;5 示例 2&…

《一天聊一个设计模式》备忘录

备忘录&#xff08;Memento&#xff09; Intent 在不违反封装的情况下获得对象的内部状态&#xff0c;从而在需要时可以将对象恢复到最初状态。 Class Diagram Originator&#xff1a;原始对象Caretaker&#xff1a;负责保存好备忘录Memento&#xff1a;备忘录&#xff0c;…

《一天聊一个设计模式》 策略

9. 策略&#xff08;Strategy&#xff09; Intent 定义一系列算法&#xff0c;封装每个算法&#xff0c;并使它们可以互换。 策略模式可以让算法独立于使用它的客户端。 Class Diagram Strategy 接口定义了一个算法族&#xff0c;它们都实现了 behavior() 方法。Context 是…

如何在eclipse jee中创建Maven project并且转换为Dynamic web project

转自&#xff1a;http://www.javaniu.com/maven-jee-dynamic-web-project.htm 注意:该文档只针对以下eclipse版本&#xff0c;如图 一.在eclipse的官方站点下载eclipse jee版本,地址http://www.eclipse.org/downloads/download.php?file/technology/epp/downloads/release/ind…

《一天聊一个设计模式》 抽象工厂

4. 抽象工厂&#xff08;Abstract Factory&#xff09; Intent 提供一个接口&#xff0c;用于创建 相关的对象家族 。 Class Diagram 抽象工厂模式创建的是对象家族&#xff0c;也就是很多对象而不是一个对象&#xff0c;并且这些对象是相关的&#xff0c;也就是说必须一起…