给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
解题代码:(Objective-c)
- (NSArray *)operation:(NSArray *)arr1 :(NSArray *)arr2{
NSInteger num = MAX(arr1.count, arr2.count);
NSArray *a1 = [self changeArr:arr1 :num];
NSArray *a2 = [self changeArr:arr2 :num];
NSMutableArray *totalArr = [NSMutableArray array];
NSInteger temp = 0;
for(NSInteger i = 0; i < num; i++) {
if ([a1[i] intValue] >= 10 || [a2[i] intValue] >= 10) {
return @[];
}
NSInteger sumNum = [a1[i] intValue] + [a2[i] intValue];
if (1 == temp) {
sumNum += 1;
temp = 0;
}
if(sumNum < 10) {
[totalArr addObject:@(sumNum)];
} else {
if (i == num-1) {
[totalArr addObject:@(sumNum % 10)];
[totalArr addObject:@(1)];
}else{
[totalArr addObject:@(sumNum % 10)];
temp = 1;
}
}
}
[totalArr.reverseObjectEnumerator allObjects];
return totalArr;
}
- (NSArray *)changeArr:(NSArray *)arr : (NSInteger)maxNum{
NSInteger arrCount = arr.count;
NSMutableArray *mutableArr = [[NSMutableArray alloc]initWithArray:arr];
if (arrCount < maxNum) {
for (NSInteger i = arrCount ; i < maxNum; i++) {
[mutableArr addObject:@0];
}
}
return mutableArr;
}
网友评论