* Definition for singly-linked list.
}
解答:这道题不难主要是考察“单链表“的相关操作。
解题思想,就是单链表每个位置相加,如果每位和大约等于10,向前一位进一,依次类推;
如下:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *result=NULL;
ListNode *l=result;
int carry =0; //进位值
while (l1 && l2){
int val=0;
int tempVal= l1->val + l2->val + carry;
if (tempVal>=10){
val=tempVal-10;
carry=1;
}
else{
val=tempVal;
carry=0;
}
ListNode *l3=(ListNode *)malloc(
sizeof(ListNode));
l3->val=val;
l3->next = NULL;
if(!l){
l=l3;
result=l;
} else{
l->next=l3;
l=l->next;
}
l1=l1->next;
l2=l2->next;
}
//对l1链表剩余项处理
while(l1){
int val=0;
int tempVal= l1->val + carry;
if (tempVal>=10){
val=tempVal-10;
carry=1;
}
else{
val=tempVal;
carry=0;
}
ListNode *l3=(ListNode *)malloc(
sizeof(ListNode));
l3->val=val;
l3->next = NULL;
if(!l){
l=l3;
} else{
l->next=l3;
l=l->next;
}
l1=l1->next;
}
//对l2链表剩余项处理
while(l2){
int val=0;
int tempVal= l2->val + carry;
if (tempVal>=10){
val=tempVal-10;
carry=1;
}
else{
val=tempVal;
carry=0;
}
ListNode *l3=(ListNode *)malloc(
sizeof(ListNode));
l3->val=val;
l3->next = NULL;
if(!l){
l=l3;
} else{
l->next=l3;
l=l->next;
}
l2=l2->next;
}
//对还存在的进位处理
if (carry)
{
ListNode *l3=(ListNode *)malloc(
sizeof(ListNode));
l3->val=carry;
l3->next = NULL;
l->next=l3;
l=l->next;
}
return result;
}
很久没有用C++的单链表了,平时用php数组实现的很多东西,这次通过这道题,让我有重新回顾了一下单链表的使用;
今天的题目
3.给定一个字符串,获得最长且不重复的字符的子串的长度。例如,“abcabcbb” 的最长子串而不必重复字母是“abc”,它的长度是3为“bbbbb”最长子串而不必重复字母是 “b”,它的长度是1。
int lengthOfLongestSubstring(string s) {
}
如有问题,欢迎和我联系。 我的邮箱 cq20151207@163.com