88. Merge Sorted Array
来源:互联网 发布:windows xp手机桌面 编辑:程序博客网 时间:2024/06/06 02:56
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
nums1的长度为m,nums2的长度为n,需要合并两个有序数组,合并到nums1中。
解法1:
从头开始扫描,nums1中的元素小就覆盖一遍,增加计数值,nums2的元素小就把当前位置之后的元素整体向后移动一位,然后放入nums2元素的值。相当于找到对应的位置,把nums2中的元素一个一个插入进来。
public static void merge(int[] nums1, int m, int[] nums2, int n){int i=0;int j=0;int cnt=0;int tail=m;while(j<n){if(i<tail&&nums1[i]<=nums2[j]){nums1[cnt++]=nums1[i];}else{for(int k=tail;k>=cnt+1;k--)nums1[k]=nums1[k-1];tail++;nums1[cnt++]=nums2[j++];}i++;}}
解法2:
直接选两个数组当前较小元素放入nums1,如果从头开始操作可能会覆盖掉原来nums1的还未遍历到的元素,可以改成从尾开始。
public void merge(int A[], int m, int B[], int n) { int i = m - 1, j = n - 1, k = m + n - 1; while(i >= 0 && j >= 0) { A[k--] = A[i] > B[j] ? A[i--] : B[j--]; } while(j >= 0) { A[k--] = B[j--]; } }
0 0
- 88. Merge Sorted Array
- 88.Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- hdu 1384逆序数 暴力法
- F - The MAX(sort)
- DOM 文档对象模型
- 解决munmap_chunk(): invalid pointer和Segmentation fault的bug
- git解决冲突的办法
- 88. Merge Sorted Array
- python学习——协程
- java23种设计模式五(连载)
- Wifi小车之 - 无线路由挂摄像头篇
- java高并发的解决
- malloc calloc realloc 作用、用法、区别、实现原理
- cvFindContours
- [Contest] UOJ NOI Round #1
- Android Studio导入Github上的项目