合并两个有序数组
//一使用一个中间数组 func merge(nums1 []int, m int, nums2 []int, n int) { tmp:=make([]int,n+m) copy(tmp,nums1)//深拷贝 i:=0;j:=0;k:=0 for i<m&&j<n{ if tmp[i]>nums2[j]{ nums1[k]=nums2[j] k++;j++ }else{ nums1[k]=tmp[i] k++;i++ } } for i<m{ nums1[k]=tmp[i] k++;i++ } for j<n{ nums1[k]=nums2[j] k++;j++ } } // 从nums1尾部往前处理,空间复杂度O(1),时间复杂度O(m+n) func merge(nums1 []int, m int, nums2 []int, n int) { i:=m-1;j:=n-1;k:=m+n-1 for i>=0&&j>=0{ if nums1[i]>nums2[j]{ nums1[k]=nums1[i] k--;i-- }else{ nums1[k]=nums2[j] k--;j-- } } for i>=0{ nums1[k]=nums1[i] i--;k-- } for j>=0{ nums1[k]=nums2[j] j--;k-- } }
等风起的那一天,我已准备好一切