1. 程式人生 > 其它 >SQL-LABS

SQL-LABS

1.Go

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    if l1==nil && l2==nil{
        return nil
    }
    if l1==nil && l2!=nil{
        return l2
    }
    if l1!=nil && l2==nil{
        return l1
    }
    ans:=&ListNode{Val:0}
    tmp:=ans
    add,sum,val:=0,0,0
    for l1!=nil && l2!=nil{
        sum=add+l1.Val+l2.Val
        add,val=sum/10,sum%10
        tmp.Next=&ListNode{Val: val}
        tmp=tmp.Next
        l1=l1.Next
        l2=l2.Next
    }
    if l1==nil{
        for l2!=nil{
            sum=add+l2.Val
            add,val=sum/10,sum%10
            tmp.Next=&ListNode{Val: val}
            tmp=tmp.Next
            l2=l2.Next
        }
    }
    if l2==nil{
        for l1!=nil{
            sum=add+l1.Val
            add,val=sum/10,sum%10
            tmp.Next=&ListNode{Val: val}
            tmp=tmp.Next
            l1=l1.Next
        }
    }
    if add!=0{
        tmp.Next=&ListNode{Val: add}
        return ans.Next
    }
    return ans.Next
}

C++中的next 和val 對應Go中Next 和Val

Go中只有. 沒有->說法

C++中  LIstNode * ans=new ListNode(0);

Go 中 ans:=&ListNode{Val: 0}

2.C++

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if (l1==NULL && l2==NULL) return NULL;
        if (l1!=NULL && l2==NULL) return l1;
        if (l1==NULL && l2!=NULL) return l2;
        ListNode * ans=new ListNode();
        ListNode *tmp=ans;
        int add=0;
        int sum,val;
        while(l1!=NULL && l2!=NULL){
            sum=add+l1->val+l2->val;
            add=sum/10;
            val=sum%10;
            tmp->next=new ListNode(val);
            tmp=tmp->next;
            l1=l1->next;
            l2=l2->next;
        }
        if (l1==NULL){
            while(l2!=NULL){
                sum=add+l2->val;
                add=sum/10;
                val=sum%10;
                tmp->next=new ListNode(val);
                tmp=tmp->next;
                l2=l2->next;
            }
        }
        if (l2==NULL){
            while(l1!=NULL){
                sum=add+l1->val;
                add=sum/10;
                val=sum%10;
                tmp->next=new ListNode(val);
                tmp=tmp->next;
                l1=l1->next;
            }
        }
        if (add!=0){//判斷下進位
            tmp->next=new ListNode(add);
            return ans->next;
        }
        return ans->next;
    }
};