【Leetcode】88. Merge Sorted Array
2016-12-30 09:55
363 查看
方法一:
思路:
(1)逐个处理nums2的每一个节点。
(2)对nums2的每一个节点nums[i],在nums1中查找第一个不小于该节点值的节点,其下标为j。
(3)从nums1的最后一个节点开始逐个后移,将nums2[i]插入到nums1[j]的位置,j++。
(4)注意:每插入一个nums2的元素,nums1当前元素总数m++。
Runtime:1ms
方法二:
思路:利用好nums1后n个空闲的空间,从后往前遍历A和B数组,每次把大的数字从A中m+n位置逐步往前放。
(1)k初始化为nums1中最后一个位置的下标,即m+n-1。
(2)处理k+1次,每次处理后k--,若插入的是nums1中元素,则i--;若插入的是nums2中元素,则j--。
(2)若i >= 0 && j < 0,表示nums2中没有待处理元素,插入nums1中元素;若j
>= 0 && i < 0,表示nums1中没有待处理元素,插入nums2中元素;若二者中都有待处理元素,插入较大元素,即若nums1[i]
> nums2[j],则插入nums1[i],否则插入nums2[j]。
思路:
(1)逐个处理nums2的每一个节点。
(2)对nums2的每一个节点nums[i],在nums1中查找第一个不小于该节点值的节点,其下标为j。
(3)从nums1的最后一个节点开始逐个后移,将nums2[i]插入到nums1[j]的位置,j++。
(4)注意:每插入一个nums2的元素,nums1当前元素总数m++。
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int j = 0; for (int i = 0; i < n; i++) { while (j < m && nums2[i] > nums1[j]) j++; for (int k = m - 1; k >= j; k--) nums1[k + 1] = nums1[k]; nums1[j] = nums2[i]; j++; m++; } } }
Runtime:1ms
方法二:
思路:利用好nums1后n个空闲的空间,从后往前遍历A和B数组,每次把大的数字从A中m+n位置逐步往前放。
(1)k初始化为nums1中最后一个位置的下标,即m+n-1。
(2)处理k+1次,每次处理后k--,若插入的是nums1中元素,则i--;若插入的是nums2中元素,则j--。
(2)若i >= 0 && j < 0,表示nums2中没有待处理元素,插入nums1中元素;若j
>= 0 && i < 0,表示nums1中没有待处理元素,插入nums2中元素;若二者中都有待处理元素,插入较大元素,即若nums1[i]
> nums2[j],则插入nums1[i],否则插入nums2[j]。
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = n - 1, k = m + n - 1; while (k >= 0) { if (i >= 0 && j < 0) nums1[k--] = nums1[i--]; else if (j >= 0 && i < 0) nums1[k--] = nums2[j--]; else if (nums1[i] > nums2[j]) nums1[k--] = nums1[i--]; else nums1[k--] = nums2[j--]; } } }Runtime:0ms
相关文章推荐
- leetcode_88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- leetcode--88. Merge Sorted Array
- Leetcode:88. Merge Sorted Array(JAVA)
- [leetcode] 【排序】 88. Merge Sorted Array
- leetcode 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- 【leetcode】88. Merge Sorted Array
- LeetCode WIith JS || 88. Merge Sorted Array[合并有序数组]
- LeetCode-88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- 【leetcode】88. Merge Sorted Array (easy)
- LeetCode 88. Merge Sorted Array
- Leetcode 88. Merge Sorted Array 合并已排序数组
- LeetCode 88. Merge Sorted Array
- 【LeetCode】88. Merge Sorted Array
- leetcode_88. Merge Sorted Array 合并两个排好序的数组,尾插法,从尾数开始合并
- LeetCode||88. Merge Sorted Array