Saturday, September 19, 2020

2. Add Two Numbers LeetCode

Time complexity: O(N)


/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* root = new ListNode(0);
ListNode* ret = root;
int carry = 0;
while(l1 or l2){
int sum = carry;
if(l1){
sum+= l1->val;
l1=l1->next;
}
if(l2){
sum+= l2->val;
l2=l2->next;
}
carry = sum / 10;
sum = sum % 10;
ret->next = new ListNode(sum);
ret = ret->next;
}
while(l1){
int sum = carry + l1->val;
l1=l1->next;
carry = sum / 10;
sum = sum % 10;
ret->next = new ListNode(sum);
ret = ret->next;
}
while(l2){
int sum = carry + l2->val;
l2=l2->next;
carry = sum / 10;
sum = sum % 10;
ret->next = new ListNode(sum);
ret = ret->next;
}
if(carry){
ret->next = new ListNode(carry);
ret = ret->next;
}
return root->next;
}
};


No comments:

Post a Comment

3. Longest Substring Without Repeating Characters LeetCode

 Time Complexity: O(N)  class Solution { public: int lengthOfLongestSubstring (string s) { vector< int > c...