《剑指Offer》面试题4习题
来源:互联网 发布:oppor9怎么切换3g网络 编辑:程序博客网 时间:2024/05/23 23:57
题目
有两个排序的数字A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,请实现一个函数,把A2中的所有数字插入到A1中并且所有数字是排序的。
分析
思路和面试题4中替换空格的思路基本相同,摒弃从前往后的一次插入一个数字的、时间复杂度为
实现代码
有了思路,就可以编写代码了。需要考虑的是A1A2中一个指针已经抵达最左边的情况:
- 如果A2数组指针优先抵达最左端,那么不需要做特殊处理;
- 如果A1数组指针优先抵达最左端,则需要将A2中剩下的数依次赋值给A1数组剩下的位置。
代码如下:
void Merge(int array1[], int array2[], int m, int n, int length){ if(array1 == NULL || array2 == NULL || length <= 0) return; int newLength = m + n; if(newLength > length) return; // 依次遍历,直到一个数组所有数已经被赋值到合适的位置 int idxOfArray1 = m - 1; int idxOfArray2 = n - 1; int idxOfNewArrays = m + n - 1; while(idxOfArray1 >=0 && idxOfArray2 >= 0 ) { if(array1[idxOfArray1] > array2[idxOfArray2]) { array1[idxOfNewArrays --] = array1[idxOfArray1 --]; } else { array1[idxOfNewArrays --] = array2[idxOfArray2 --]; } } // 处理A1指针优先抵达最左端的情况 while(idxOfArray2 >= 0) { array1[idxOfNewArrays --] = array2[idxOfArray2 --]; }}
测试用例还没有写,稍后补上。
0 0
- 《剑指Offer》面试题4习题
- 【剑指offer】面试题28的习题:正方体,八皇后
- 剑指offer面试题4
- 剑指offer 面试题4
- 【面试题】剑指offer 4
- 剑指offer面试题4
- 剑指offer面试题4
- 剑指offer面试题4
- 剑指offer 面试题
- 剑指offer面试题
- 剑指offer-->面试题4 替换空格
- 读书笔记-剑指offer面试题4
- 《剑指offer》面试题4 替换空格
- 【剑指offer】面试题4:替换空格
- 【剑指offer】面试题4替换空格
- 剑指offer 面试题4 替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4-替换空格
- Eclipse 乱码问题 修改设置
- Xcode高级调试技巧
- 黑马程序员——OC基础:block和Protocol及Category
- Missing number(5166)
- 二进制炸弹BOMB报告
- 《剑指Offer》面试题4习题
- c++
- C:\Vim\_vimrc
- [CF538E]Demiurges Play Again && 树形DP
- 安胜安全操作系统的隐蔽通道场景演示之二【最近访问时间信道】
- Android系统移植总结
- JDBC 如何获得自动生成的主键
- 字符编码笔记:ASCII,Unicode和UTF-8
- C:\Vim\VIMPROJ\vimrc\_vimrc