LeetCode|Merge Two Sorted Lists/Merge Sorted Array
2016-04-19 23:15
543 查看
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.class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode head(-1), *l = &head; while(l1 && l2){ if(l1->val <= l2->val){ l->next = l1; l = l->next; l1 = l1->next; } else{ l->next = l2; l = l2; l2 = l2->next; } } if(l1){ l->next = l1; } else { l->next = l2; } return head.next; } };
head方便统一情况,同时便于最终的返回。
Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
思路:假设是递增的序列,那么从后往前插数可以减少数组的移动。
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int end = m-- + n-- - 1; while(m >= 0 && n >= 0){ if(nums1[m] >= nums2 ){ nums1[end--] = nums1[m--]; } else{ nums1[end--] = nums2[n--]; } } while(n >= 0){ nums1[end--] = nums2[n--]; } return; } };