Add Binary
Question
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
Analysis
加数的过程是从最低位开始加,假如两个数字位数不同的话高位以0补齐。首先在其中一个数字为0的情况下返回另外一个数字。在经过所有的判断之后,两个指向最高位的游标同时像低位扫描,判断为0/1,同时给temp赋值,取得两个temp与flag的和后判断是否需要进位。在全部扫描过后再看flag是否为1,决定是否需要在加1位。stringbuilder 的 append 可以提高空间利用率,最后将整个字符串倒转即可。
Code
|
|
Add Two Numbers
Question
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Analysis
思路跟上面的类似,不过处理的方式变成链表的指针移动。除此之外,还有进位的问题,假如对进位和所录入数字的计算变为求余和求除数的话,就不用假如if来判断sum是否超过10了。
ListNode每次有新节点的时候都需要new,否则会造成 java.lang.NullPointerException
Code
|
|