1. 数组实现加法专题
数字加法,小学生都会的问题,但是如果让你用数组来表示一个数,如何实现加法呢?理论上仍然从数组末尾向前挨着计算就行了,但是实现的时候会发现有很多问题,例如算到A[0]位置时发现还要进位该怎么办呢?
再拓展,假如给定的两个数,一个用数组存储的,另外一个是普通的整数,又该如何处理?
再拓展 ,如果两个整数是用字符串表示的呢?如果要按照二进制加法的规则来呢?
1.1 数组实现整数加法
先看一个用数组实现逐个加一的问题。LeetCode66.具体要求是由整数组成的非空数组所表示的非负整数,在其基础上加一。这里最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。并且假设除了整数 0 之外,这个整数不会以零开头。例如:
1.2 字符串加法
我们继续看将数字保存在字符串中的情况: 字符串加法就是使用字符串来表示数字,然后计算他们的和。具体要求如下:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
我们先想一下小学里如何计算两个比较大的数相加的,经典的竖式加法是这样的:
从低到高逐位相加,如果当前位和超过 10,则向高位进一位。
因此我们只要将这个过程用代码写出来即可。先定义两个指针 i 和j 分别指向num1和num2的末尾,即最低位,同时定义一个变量 add 维护当前是否有进位,然后从末尾到开头逐位相加。
这里可能有个问题:两个数字位数不同该怎么处理?简单,补0即可。具体可以看下面的代码:
1.3 二进制加法
2 幂运算
2.1 求2的幂
2.2 求3的幂
2.3 求4的幂
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。