R**y 发帖数: 72 | 1 You have two numbers represented by a linked list where each node contains a
single digit. The digits are stored in reverse order. Write a function to
add two numbers and return another linked list.
题目来自Career up 150. 另有一个followup, linked list 储存数字为正常顺序,同
样求和。
书上给的解法是直接进行数位的加减,然后将新的数字输入到linkedlist.
这一题,我直接的想法是利用stack和queue 将数字取出来重新包装成int,完成加法后
,再输入回linkedlist。
希望有大牛帮忙比较一下两种思路的优劣。 |
l*******b 发帖数: 2586 | 2 linked list 本来就是要处理整数不够会溢出的情况吧。。。转换成整数还有什么意思 |
b***m 发帖数: 5987 | 3 正确。楼主那么做题会被直接fail掉。
【在 l*******b 的大作中提到】 : linked list 本来就是要处理整数不够会溢出的情况吧。。。转换成整数还有什么意思
|
R**y 发帖数: 72 | 4 感谢回复。
那这道题的目的在于用linked list表示非常大的数,然后进行linked list 形式的加
法运算
例如 a = 1-> 2 ..(n 个)... 2 ->2 计算a+a。 这样的情况如果我提取出来,整数是
肯定会溢出的。
但是用linked list 却还是可以进行运算。
不知道我的理解对不对。
【在 l*******b 的大作中提到】 : linked list 本来就是要处理整数不够会溢出的情况吧。。。转换成整数还有什么意思
|
R**y 发帖数: 72 | 5 bjhmm大牛。。。感谢你的回复。
我刚刚做题不久,揣摩不到题目的意思。我原本以为,以为这是考察queue 和 stack的
使用。。。。
没想到整数溢出这回事
【在 b***m 的大作中提到】 : 正确。楼主那么做题会被直接fail掉。
|
b***m 发帖数: 5987 | 6
这题其实根本不需要用queue和stack,inplace死做就行了。
【在 R**y 的大作中提到】 : bjhmm大牛。。。感谢你的回复。 : 我刚刚做题不久,揣摩不到题目的意思。我原本以为,以为这是考察queue 和 stack的 : 使用。。。。 : 没想到整数溢出这回事
|
F********9 发帖数: 44 | 7 如果是逆序,就直接加,存到新link list里。
如果是正序,可以先将两个链表逆序,然后加, 然后再逆序。 |
R**y 发帖数: 72 | 8 赞同,死做是个好选项
【在 b***m 的大作中提到】 : : 这题其实根本不需要用queue和stack,inplace死做就行了。
|
t****a 发帖数: 1212 | 9 这几天正在琢磨clojure的尾递归优化,就顺手写了一个
(defn linked-list-add [v1 v2]
(letfn [(add-sub [i1 i2 d current]
(if (and (zero? i1) (zero? i2))
current
(let [a1 (get v1 (dec i1))
a2 (get v2 (dec i2))
s (+ a1 a2 d)
b (if (<= s 9)
s
(- s 10))
c (if (<= s 9)
0
1)]
(recur (dec i1) (dec i2) c (cons b current)))))]
(vec (add-sub (count v1) (count v2) 0 []))))
(linked-list-add [3 6 8] [5 3 3]) ; [9 0 1] |
j*****I 发帖数: 2626 | 10 请问楼主这个150是不是对付算法题目比较全的一本书了?
a
【在 R**y 的大作中提到】 : You have two numbers represented by a linked list where each node contains a : single digit. The digits are stored in reverse order. Write a function to : add two numbers and return another linked list. : 题目来自Career up 150. 另有一个followup, linked list 储存数字为正常顺序,同 : 样求和。 : 书上给的解法是直接进行数位的加减,然后将新的数字输入到linkedlist. : 这一题,我直接的想法是利用stack和queue 将数字取出来重新包装成int,完成加法后 : ,再输入回linkedlist。 : 希望有大牛帮忙比较一下两种思路的优劣。
|