leetcode-Two Sum、Reverse Integer、Add Two Numbers

two sum问题:

vector<int> twoSum(vector<int> &numbers, int target) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        vector<int> result;
for (int i = 0; i < numbers.size(); ++i)
{
    for (int j = i + 1; j < numbers.size(); ++j)
    {
        if (target == numbers[i] + numbers[j])
        {
            result.push_back(i + 1);
            result.push_back(j + 1);
        }
    }
}
return result;
}

 

Reverse Integer:

int reverse(int x)
{
    int flag = 1;
    if (x < 0)
    {
        flag = -1;
    }
    int temp = abs(x);
    int y = 0;
    
    while (temp>=10)
    {
        y = (y + (temp % 10)) * 10;
        temp = temp / 10;
    }
    y += (temp % 10);
    return (y * flag);
}

 

add two numbers:

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        ListNode* firstNode = new ListNode(l1->val);
        ListNode* p = firstNode;
        //copy l1 to new list
        while (l1->next != NULL)
        {
            l1 = l1->next;
            ListNode* newNode = new ListNode(l1->val);
            firstNode->next = newNode;
            firstNode = newNode;
        }
        
        //point to the first node
        firstNode = p;
        do
        {
            firstNode->val += l2->val;
            l2 = l2->next;
            if (l2 != NULL)
            {
                if (NULL == firstNode->next)
                {
                    firstNode->next = new ListNode(0);
                }
                if (firstNode->val >= 10)
                {
                    firstNode->next->val += 1;
                    firstNode->val = firstNode->val % 10;
                }
                firstNode = firstNode->next;
            }
            
        }while (l2 != NULL);
        while (firstNode != NULL)
        {
            if (firstNode->val >= 10)
            {
                if (firstNode->next != NULL)
                {
                    firstNode->next->val += 1;
                }
                else
                {
                    firstNode->next = new ListNode(1);
                }
                firstNode->val = firstNode->val % 10;
            }
            firstNode = firstNode->next;
        }
        return p;
    }

 

posted @ 2013-04-24 18:57  aijm  阅读(118)  评论(0)    收藏  举报