Add Digits
package cn.edu.xidian.sselab;
import java.util.ArrayList;
/**
* title:Add Digits
* contents:
* Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
* For example:
* Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
* Follow up:
* Could you do it without any loop/recursion in O(1) runtime?
*/
public class AddDigits {
/**
* @author wzy
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AddDigits ad = new AddDigits();
int result1 = ad.addDigits(59);
int result2 = ad.addDigitAnotherWay(59);
System.out.println(result1 + " " + result1);
}
//没有看清题目,不允许使用循环与递归,时间复杂度为O(1),错误的解法
//而且这个地方也不用这么麻烦,用取余操作就可以求和
public int addDigit(int num){
while(num >=10){
String strNum = String.valueOf(num);
int length = strNum.length();
int result = 0;
for(int i=0;i<length;i++){
result += Integer.valueOf(strNum.charAt(i) - 48);
}
num = result;
}
return num;
}
//这也是一种求各位数之后的方法
public int addDigitAnotherWay(int num){
while(num >= 10){
num = (num / 10) + num % 10;
}
return num;
}
//分析得出来的规律,自己没有的出来,从网上得到的思路,看到了公式result = (num -1) % 9 + 1,也可以是其他公式
public int addDigits(int num){
int result = 0;
result = (num -1) % 9 + 1;
return result;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 深度学习基础理论————CV中常用Backbone(Resnet/Unet/Vit系列/多模态系列等