设计素材库,百度优化服务,大连企业网站建设,室内设计培训学校哪个好面试经典150题 day1 题目来源我的题解方法一 先合并#xff0c;再排序方法二 逆向双指针 题目来源
力扣每日一题#xff1b;题序#xff1a;88
我的题解
方法一 先合并#xff0c;再排序 先将nums2全部放到nums1之后#xff0c;然后进行排序。 时间复杂度#xff1a;O… 面试经典150题 day1 题目来源我的题解方法一 先合并再排序方法二 逆向双指针 题目来源
力扣每日一题题序88
我的题解
方法一 先合并再排序 先将nums2全部放到nums1之后然后进行排序。 时间复杂度O(nlogn)。排序需要的时间 空间复杂度O(1) public void merge(int[] nums1, int m, int[] nums2, int n) {int indexm;int r20;while(r2n){nums1[index]nums2[r2];}Arrays.sort(nums1);
}方法二 逆向双指针 最终答案需要存放在nums1中并且升序排列所以可以从两个数组的末端开始比较较大的放入到nums1的右侧。 当然若为了好理解可以使用正向双指针不过需要借助额外的数组暂存结果。 时间复杂度O(nm) 空间复杂度O(1) public void merge(int[] nums1, int m, int[] nums2, int n) {int indexmn-1;int r1m-1,r2n-1;while(r10r20index0){if(nums1[r1]nums2[r2]){nums1[index--]nums1[r1--];}else{nums1[index--]nums2[r2--];}}while(r20){nums1[index--]nums2[r2--];}while(r10){nums1[index--]nums1[r1--];}}有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~