每日一题:leetcode

每日一题:leetcode,第1张

借鉴一下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--];
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存