[LeetCode]88. 合并两个有序数组(java实现)归并排序
1. 题目
2. 读题(需要重点注意的东西)
思路(归并排序):
由于第一个数组nums1较大,所以不用开新的数组,但是从前往后遍历依次存储在nums1中会使得nums1中的数据被覆盖,所以需要从后往前遍历
,取较大的数放在nums1的结尾
,然后结尾指针向前移动一位。
3. 解法
---------------------------------------------------解法---------------------------------------------------
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k = n + m - 1 ;
int i = m - 1, j = n - 1;
while(i >= 0 && j >= 0){
if(nums1[i] >= nums2[j]) nums1[k--] = nums1[i--];
else nums1[k--] = nums2[j--];
}
while(j >= 0) nums1[k--] = nums2[j--];
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 归并排序