88. merge sorted array
2016-07-01 16:29
281 查看
简单题,一定要想出两到三种思路。比如这题,我一开始的思路,简单直观,但开辟了新的内存。
复制了一遍nums1, 特别不好,还只知道从前往后。更好的做法,就是倒过来,直接写。
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = 0, j = 0; int count = 0; vector<int> tnum = nums1; while (i < m && j < n) { if (tnum[i] <= nums2[j]) { nums1[count] = tnum[i]; i++; } else { nums1[count] = nums2[j]; j++; } count++; } if (i == m) { while (j < n) { nums1[count] = nums2[j]; count++; j++; } } else { if (j == n) { while (i < m) { nums1[count] = tnum[i]; i++; count++; } } } }
复制了一遍nums1, 特别不好,还只知道从前往后。更好的做法,就是倒过来,直接写。
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = m-1, j = n-1, p = m+n-1; while ((i>=0) && (j>=0)) { if (nums1[i] >= nums2[j]) { nums1[p] = nums1[i]; i--; p--; } else { nums1[p] = nums2[j]; j--; p--; } } if (i<0) { while (j >= 0) { nums1[p] = nums2[j]; j--; p--; } } }
相关文章推荐
- iOS实现MD5加密的代码
- MySQL 查询指定数量的表数据
- Android MTK Settings 关闭系统窗口切换动画
- web:selenium自动化实践
- 使用StringReader和StringWriter操作字符串
- Android 源码与SO库路径
- 动态获取Rooto的方法
- Docker创建支持sshd服务镜像
- 庖丁java---1.staic关键字
- 获取指定名称的注册表值
- 学习移动web开发的一些小笔记
- 1007. Maximum Subsequence Sum (25)
- JBoss7 安装配置
- yaf 安装和开发环境配置
- Android比较常见的流行框架
- 运放补偿电容
- iOS 获取文件的目录路径的几种方法
- 首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 » 为什么Java要把字符串设计成不可变的
- HDU——2612Find a way(多起点多终点BFS)
- Apache的虚拟主机配置