合并两个有序数组--LeetCode:https://leetcode-cn.com/problems/merge-sorted-array
题目虽然归类于简单类型,鉴于题目要求是合并到传入参数nums1,如果不从后向前进行合并的话,则要么浪费空间(一般做法是对num1拷贝一份),要么很复杂!
特此记录:从后向前思考!
public class Main { public static void main(String[] args) { int[] nums1= {1,2,3,0,0,0}; int m = 3; int[] nums2= {2,5,6}; int n = 3; merge(nums1,m,nums2,n); System.out.println(Arrays.toString(nums1)); } public static void merge(int[] nums1,int m,int nums2[],int n){ int nums1Index = m-1; int nums2Index = n-1; for (int i=m+n-1;i>-1;i--) { if (nums1Index == -1){ nums1[i] = nums2[nums2Index--]; continue; } if (nums2Index == -1){ nums1[i] = nums1[nums1Index--]; continue; } if (nums1[nums1Index] >= nums2[nums2Index]){ nums1[i] = nums1[nums1Index--]; }else { nums1[i] = nums2[nums2Index--]; } } } }