借鉴一下c语言的指针思路,时间复杂度是n(0)
public static void merge(int[] nums1, int m, int[] nums2, int n){ int k = n+m; for (int index = k-1,nums1Index = m-1,nums2Index = n-1;index >= 0;index--){ if (nums1Index < 0){//如果nums1的数据被取完了,直接将nums2的剩余数据赋值到nums1的剩余位置 nums1[index] = nums2[nums2Index--]; } else if (nums2Index < 0){//如果nums2的数据被取完了,直接将nums1的剩余数据赋值到nums1的剩余位置 nums1[index] = nums1[nums1Index--]; } else if (nums1[nums1Index] > nums2[nums2Index]){//比较两个指针对应的数字,大的一个赋值到nums1[index] nums1[index] = nums1[nums1Index--]; } else {//比较两个指针对应的数字,大的一个赋值到nums1[index] nums1[index] = nums2[nums2Index--]; } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)