leetcode 88. Merge Sorted Array合并有序数组
2017-12-08 10:20
405 查看
问题描述:
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.
思路一:
从前往后搜索。针对nums2中的每个值,如nums2[0],将其与nums1中的每个值进行比较,若小,则放入nums1中,然后将较大值放入nums2[0]。将nums1遍历完后,将nums2[0]的值放入nums1的尾部。如此循环。
代码一:
思路二:
从前向后搜索需要移动所有的元素,可以考虑从后向前进行搜索,因为数组的总长度是固定的。
代码二:
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.
思路一:
从前往后搜索。针对nums2中的每个值,如nums2[0],将其与nums1中的每个值进行比较,若小,则放入nums1中,然后将较大值放入nums2[0]。将nums1遍历完后,将nums2[0]的值放入nums1的尾部。如此循环。
代码一:
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { for(int index2 = 0; index2 < n; index2++){ int index1 = 0; while(index1 < m){ if(nums1[index1] <= nums2[index2]) index1++; else{ int temp = nums1[index1]; nums1[index1] = nums2[index2]; nums2[index2] = temp; index1++; } } nums1[m] = nums2[index2]; m = m + 1; } return; } }
思路二:
从前向后搜索需要移动所有的元素,可以考虑从后向前进行搜索,因为数组的总长度是固定的。
代码二:
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int index1 = m - 1; int index2 = n - 4000 1; int len = m + n - 1; while(index1 >= 0 && index2 >= 0){ if(nums1[index1] > nums2[index2]){ nums1[len] = nums1[index1]; index1--; } else{ nums1[len] = nums2[index2]; index2--; } len--; } while(index2 >= 0){ nums1[len] = nums2[index2]; len--; index2--; //简单可以写作:nums1[len--] = nums2[index2--]; } return; } }
相关文章推荐
- leetCode 88. Merge Sorted Array 有序数组
- leetcode Merge Sorted Array 合并有序数组
- leetcode88---Merge Sorted Array(合并有序数组)
- ※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)
- Leetcode 88 Merge Sorted Array 合并两个有序数组
- leetcode:Merge Sorted Array(合并两个有序数组到其中一个数组中)【面试算法题】
- [LeetCode] Merge Sorted Array 合并两个有序数组
- 【LeetCode】- Merge Sorted Array (合并有序数组).
- [LeetCode-88] Merge Sorted Array(合并有序数组)
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- [LeetCode]Merge Sorted Array(合并两个有序的数组)
- LeetCode Merge Sorted Array(合并有序数组)
- 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
- Merge Sorted Array合并两个有序数组
- [leetcode]Convert Sorted Array to Binary Search Tree (有序数组转化为二叉搜索树 C语言)
- merge-sorted-array——合并两个有序数组
- LeetCode-Remove Duplicates from Sorted Array-从有序数组移除重复-简单逻辑
- [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
- leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
- [LeetCode] 108. Convert Sorted Array to Binary Search Tree 把有序数组转成二叉搜索树