【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-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

将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询数据库数