Merge Sorted Array
来自 <https://leetcode.com/problems/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 nums1and nums2 are m and n respectively.
题目解读:
给定两个整型数组nums1 和nums2,将数组nums2中的元素归并到数组nums1中。题目已经假设数组nums1 中拥有足够的空降将数组nums2 中的元素加入到其中。
解析:
方法一:按照最常规的方法从前往后归并。申请一个空间为m+n的数组nums3 ,将两个数组中的元素归并到数组nums3 中,程序结束时再将数组nums3 中的元素复制到数组nums1 中。此方法必须申请额外的空间来存储数组nums3 ,并且在还得数组nums3 中的数据复制到数组nums1 中,此方法拥有较高的时间和空间复杂度。
方法二:
从后向前归并。由于数组nums1 拥有足够的空间可以容纳m+n个元素,则可以利用nums1中的空间进行从后向前归并。i记录nums1中最后一个元素的位置,j记录nums2中最后一个元素的位置,k记录两个数组归并后最后一个元素的位置。图解如下图所示
Java 代码
public void merge(int[] nums1, int m, int[] nums2, int n) { if((nums1==null) && (nums2==null)) return; /** * 记录nums1中最后一个元素的位置 */ int i = m-1; /** * 记录nums2中最后一个元素的位置 */ int j = n-1; /** * 记录归并结束后最后一个元素的位置 */ int k = m+n-1; while ((i>=0) && (j>=0)) { if(nums1[i] > nums2[j]) { nums1[k--] = nums1[i--]; } else { nums1[k--] = nums2[j--]; } } //add remains elements to result while(j>=0) { nums1[k--] = nums2[j--]; } for(int a: nums1) System.out.print(a + ","); }
算法性能
相关推荐
javascript js_leetcode题解之88-merge-sorted-array.js
python python_leetcode题解之088_Merge_Sorted_Array
java入门 java_leetcode题解之088_Merge_Sorted_Array
c语言基础 c语言_leetcode题解之0088_merge_sorted_array.zip
leetcode双人赛 leetcode-solution 闲暇之余,刷一下题,弥补数据结构和算法的短板 概述 之前写过一个 leetcode 的一点题解,不过后来就断了,现在重新...merge-sorted-array 杨辉三角 pascals-triangle 杨辉三角 II pa
- Search in Rotated Sorted Array II: 假设按照升序排序的数组在预先未知的某个点上进行了旋转,该问题要求在旋转后的数组中搜索特定元素。 这些知识点涵盖了数据结构和算法的核心概念,以及如何用Python语言实现...
Merge Sorted Array 合并 排序 数组 leetcode
- **合并排序数组(Merge Sorted Array)**: 将两个排序数组合并成一个新的排序数组。 - **寻找数组中的中位数(Median of Two Sorted Arrays)**: 在两个排序数组中找到中位数。 - **快速选择算法(Kth Largest Element)...
Merge Two Sorted Lists] [53. Maximum Subarray] [70. Climbing Stairs] [101. Symmetric Tree] [104. Maximum Depth of Binary Tree] [121. Best Time to Buy and Sell Stock] [167. Two Sum II - Input array is ...
88.合并两个有序数组 (Merge Sorted Array) 100.相同的树 (Same Tree) 104.二叉树的最大深度 (Maximum Depth of Binary Tree) 118.杨辉三角 (Pascal's Triangle) 119.杨辉三角 II (Pascal's Triangle)
【字符串知识】 在编程面试中,字符串是常...例如《合并两个有序数组》(https://leetcode-cn.com/problems/merge-sorted-array/)、《最大数字》(https://leetcode-cn.com/problems/largest-number/)以及《最大间距》...
search-in-rotated-sorted-array ,比较中间值和边,而不是目标和边 40:combination-sum-ii:传递最后选择的索引 41:先缺失正,交换 42:只是提醒:块 - 垃圾箱 43:多字符串,i+j,i+j+1 44:通配符
总览 ... 例如, merge-sorted-array.py的解决方案位于https://leetcode.com/problems/merge-sorted-array/ 。 Leetcode类似问题 我发现一起解决类似的问题很有意义,这样当我们遇到新问题时,我们可以
Leetcode算法练习 Leetcode算法练习 ...MaximumSubarray 58_LengthOfLastWord 66_PlusOne 67_AddBinary 69_Sqrt(x) 70_ClimbStairs 83_RemoveDuplicatesFromSortedList 88_MergeSortedArray 100_SameT
leetcode写题闪退 #*的多少代表此题的有意思程度 有几题第一次写的时候思绪比较混乱: *****Regular Expression Matching 2014.10.29 对于Find Minimum in Rotated Sorted Array II 和 Find Minimum in Rotated ...
liwangStudy note for leetcode.Easy001 Two SumUsing hash map.020 Valid ParenthesesUsing stack can achieve O(n) space and O(n) time.Using Regular match, the complexity depends on the regular algorithm....
LeetCode中的这类问题涵盖了排序、查找、反转等操作,如“两数之和”(Two Sum)、“旋转数组”(Rotate Array)和“合并两个有序链表”(Merge Two Sorted Lists)。 2. **栈和队列**:这两种线性结构在处理逆序...
12. Two Sum II Input array is sorted 两数之和II是一个变体的问题,要求找到数组中两个元素之和等于目标值的元素,并且数组已经排序。可以使用双指针来解决该问题。 13. Two Sum III Data structure design 两...
6. **Merge Sorted Array** (合并两个有序数组): 要求将两个已排序的数组合并成一个有序数组,可以使用双指针技术,从数组的两端开始比较并合并,逐步向中间移动。 7. **Binary Tree Maximum Path Sum** (二叉树中...
462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...