LeetCode OJ - Merge Sorted Array & Merge Two Sorted Lists

来源:互联网 发布:淘宝优惠券地址转换 编辑:程序博客网 时间:2024/05/21 10:21

Merge Sorted Array

 

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.

分析:归并基本操作

class Solution {public:    void merge(int A[], int m, int B[], int n) {        int i = m - 1, j = n - 1;        int x = m + n - 1;        while(i >= 0 && j >= 0) {            if(A[i] > B[j]) {                A[x--] = A[i--];             } else {                A[x--] = B[j--];            }        }                while(i >= 0) {            A[x--] = A[i--];        }                while(j >= 0) {            A[x--] = B[j--];        }    }};


Merge Two Sorted Lists

 

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution {public:    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {        ListNode dummy(0);        ListNode *head = &dummy;                while(l1 && l2) {            if(l1->val < l2->val) {                head->next = l1;                l1 = l1->next;                head = head->next;            } else {                head->next = l2;                l2 = l2->next;                head = head->next;            }        }                while(l1) {            head->next = l1;            l1 = l1->next;            head = head->next;        }                while(l2) {            head->next = l2;            l2 = l2->next;            head = head->next;        }                return dummy.next;    }};



0 0
原创粉丝点击