LeetCode - 88. Merge Sorted Array
来源:互联网 发布:传智播客168 erp 源码 编辑:程序博客网 时间:2024/06/16 21:34
从前面移动元素的话会非常麻烦,所以这道题目的思路是从数组的后面开始移动元素,将两个数组从大到小移动而不是从前面从小到大移动,这种方法非常巧妙,也是一种常用的方法,每当从前面移动数组或字符串不是很方便的时候可以思考可否从数组的后面进行移动。另外当某个数组的元素全都移动完毕之后,我们需要将另一个数组剩下的元素进行移动,这里利用了题目的一个特性,就是我们移动元素的目标是nums1,也就是说,如果nums1的长度比较大的话,那么我们在退出循环之后什么都不用做,因为前面的元素不用移动也已经in-place sorted,所以只用检测nums2是否移动完即可。时间复杂度O(n + m),代码如下;
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { // Set pointers to end of array int i = m - 1; int j = n - 1; int k = m + n - 1; // Move elements from end of array while(i >= 0 && j >= 0){ // Move larger element to end of nums1 if(nums1[i] > nums2[j]){ nums1[k] = nums1[i]; i--; k--; }else{ nums1[k] = nums2[j]; j--; k--; } } // Move remaining elements to nums1, if m > n, no need to move while(j >= 0){ nums1[k] = nums2[j]; j--; k--; } }}
知识点:
1. 记住这种从后面移动数组的思想,每当从前方操作数组或是字符串比较麻烦的时候,可以尝试下从后方移动是否可行
0 0
- LeetCode 88. Merge Sorted Array
- [LeetCode]88.Merge Sorted Array
- [Leetcode] 88. Merge Sorted Array
- LeetCode --- 88. Merge Sorted Array
- [leetcode] 88.Merge Sorted Array
- [leetcode] 88. Merge Sorted Array
- 88. Merge Sorted Array LeetCode
- 【LeetCode】88. Merge Sorted Array
- LeetCode *** 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- leetcode 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- leetcode-88. Merge Sorted Array
- leetcode 88. Merge Sorted Array
- Leetcode - 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- LeetCode-88.Merge Sorted Array
- Leetcode 88. Merge Sorted Array
- UGUI Text组件实际文本宽高的获取
- hdu 5702 Solving Order(结构体排序 水题)
- yii2框架-yii2的面包屑导航(十八)
- hdu3592(差分约束)
- swiper的基本使用(十三)
- LeetCode - 88. Merge Sorted Array
- TCP/IP 机制的理解
- 控制范围
- 浅谈Linux的I/O模型
- Android学习笔记十七之GridLayout网格布局
- GIPS-NetEQ 最大化话音质量、最小化延迟
- 关于Windows下使用Wamp搭建服务器出现403错误问题解决办法
- Android Material Design 详解(使用support v7兼容5.0以下系统)
- 玩具装箱[HNOI 2008][Codevs 1319]