【LeetCode】Plus One 【九度】题目1198:a+b

2024-08-25 12:32

本文主要是介绍【LeetCode】Plus One 【九度】题目1198:a+b,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Plus One 
Total Accepted: 4206 Total Submissions: 14127 My Submissions
Given a number represented as an array of digits, plus one to the number.
题目意思为给定一个数组,这个数组内的数代表某个大数,也就是可能为100位甚至多少位的一个数。
例如123456789012345678901234567890000,那么digits的每个位必然为一个个位数。
两个大数相加,可以使用数组,按位累加。
大于10就进位,同时将当前位-1,并且上一位加1。
Java AC

public class Solution {public int[] plusOne(int[] digits) {int len = digits.length;int addNum[] = new int[len + 1];addNum[len] = 1;for (int i = len - 1; i >= 0; i--) {addNum[i + 1] += digits[i];if (addNum[i + 1] >= 10) {addNum[i + 1] -= 10;addNum[i] += 1;}}if (addNum[0] ==  0) {System.arraycopy(addNum, 1, digits, 0, len);return digits;}else {return addNum;}}
}

LeetCode Add Binary 也是大数相加,只不过这次是二进制,知道进制相加的原则即可。
Java AC

public class Solution {public String addBinary(String a, String b) {if(a == null || b == null){return "";}if("".equals(a) || "".equals(b)){return "";}if("".equals(a.replaceAll("0", "")) && "".equals(b.replaceAll("0", ""))){return "0";}int len1 = a.length();int len2 = b.length();char arrayA[] = a.toCharArray();char arrayB[] = b.toCharArray();int maxLen = Math.max(len1,len2);int minLen = Math.min(len1,len2);int array[] = new int[maxLen+1];int k = maxLen;if(maxLen == len1){for(int i = minLen-1; i >= 0; i--){array[k] += arrayA[k-1] - '0' + arrayB[i] - '0';if(array[k] >= 2){array[k] -= 2;array[k-1] += 1;}k--;}while(k > 0){array[k] += arrayA[k-1] - '0';if(array[k] >= 2){array[k] -= 2;array[k-1] += 1;}k--;}}else{for(int i = minLen-1; i >= 0; i--){array[k] += arrayA[i] - '0' + arrayB[k-1] - '0';if(array[k] >= 2){array[k] -= 2;array[k-1] += 1;}k--;}while(k > 0){array[k] += arrayB[k-1] - '0';if(array[k] >= 2){array[k] -= 2;array[k-1] += 1;}k--;}}StringBuffer sb = new StringBuffer();int i = 0;if(array[0] == 0){i = 1;}for(; i < maxLen+1; i++){sb.append(array[i]);}return sb.toString();}
}

九度题目1198:a+b 2010年华中科技大学计算机研究生机试真题是一类题。
当时用了三种解法去解决。
一并给代码。
方法1 Java AC

import java.math.BigDecimal;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){String a = scanner.next();String b = scanner.next(); BigDecimal ad = new BigDecimal(a);BigDecimal bd = new BigDecimal(b);BigDecimal c = ad.add(bd);System.out.println(c);}}
}
/**************************************************************Problem: 1198User: wzqwsrfLanguage: JavaResult: AcceptedTime:980 msMemory:84752 kb
****************************************************************/

方法2 Java AC

import java.util.Scanner;
public class Main {/** 1198*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){             String a = scanner.next();String b = scanner.next(); int alength = a.length();int blength = b.length();int minlength = Math.min(alength, blength);int maxlength = Math.max(alength, blength);int in = 0 ;String result = "";String maxStr = alength>blength?a:b;String minStr = alength<blength?a:b;int c = maxlength-minlength;for (int i = minlength -1; i >= 0; i--) {int sa = minStr.charAt(i)-'0';int sb = maxStr.charAt(c + i)-'0';int count = sa+sb+in;if(count >= 10){in = 1;result = count-10+result;}else{in = 0 ;result = count + result;}                 }             for (int i = c-1 ; i >= 0 ; i--) {int max = maxStr.charAt(i)-'0';int count = max+in;if(count>=10){in = 1;result = count-10+result;}else{in = 0 ;result = count + result;}}if(in==1){result = in +result ;}System.out.println(result);}}
}
/**************************************************************Problem: 1198User: wzqwsrfLanguage: JavaResult: AcceptedTime:1120 msMemory:210296 kb
****************************************************************/

方法3 Java AC

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){String a = scanner.next();String b = scanner.next();int aLength = a.length();int bLength = b.length();int max = Math.max(aLength, bLength);int[] arrayA = new int[max+1];int[] arrayB = new int[max+1];int k = 0;for (int i = max+1-aLength ; i< max+1; i++ ) {arrayA[i] = a.charAt(k)-'0';k++;}k = 0;for (int i = max+1-bLength ; i< max+1; i++ ) {arrayB[i] = b.charAt(k)-'0';k++;}int[] arrayC = new int[max+1];for (int i = max ; i> 0 ;i--) {arrayC[i] += arrayA[i] + arrayB[i];if (arrayC[i]>=10) {arrayC[i] -= 10;arrayC[i-1] += 1;}}if (arrayC[0] == 0) {for (int i = 1; i < arrayC.length; i++) {System.out.print(arrayC[i]);}System.out.println();}else {for (int i = 0; i < arrayC.length; i++) {System.out.print(arrayC[i]);}System.out.println();}}}
}
/**************************************************************Problem: 1198User: wzqwsrfLanguage: JavaResult: AcceptedTime:2290 msMemory:95360 kb
****************************************************************/

这篇关于【LeetCode】Plus One 【九度】题目1198:a+b的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105553

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

springboot3.4和mybatis plus的版本问题的解决

《springboot3.4和mybatisplus的版本问题的解决》本文主要介绍了springboot3.4和mybatisplus的版本问题的解决,主要由于SpringBoot3.4与MyBat... 报错1:spring-boot-starter/3.4.0/spring-boot-starter-

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st