[容易]合并排序数组
题目来源:http://www.lintcode.com/zh-cn/problem/merge-sorted-array-ii/
先贴一个错误的代码,通过了示例,但是没有通过全部案例:
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 class Solution { 6 public: 7 /** 8 * @param A and B: sorted integer array A and B. 9 * @return: A new sorted integer array 10 */ 11 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { 12 // write your code here 13 vector<int> C(A.size()+B.size()); 14 int i,j,k; 15 for(i=0,j=0,k=0;k<A.size()+B.size();k++) 16 { 17 if(i<A.size()&&A.at(i)<=B.at(j)) 18 { 19 C.at(k)=A.at(i); 20 i++; 21 } 22 else 23 if(j<B.size()) 24 { 25 C.at(k)=B.at(j); 26 j++; 27 } 28 } 29 return C; 30 } 31 }; 32 33 int main() 34 { 35 Solution s; 36 int a[4]={1,2,3,4}; 37 int b[4]={2,4,5,6}; 38 vector<int> A(a,a+4); 39 vector<int> B(b,b+4); 40 vector<int> C(8); 41 C=s.mergeSortedArray(A,B); 42 for(int i=0;i<C.size();i++) 43 cout<<C.at(i)<<" "; 44 }
这道题类似归并排序中的:将有序的temp[s..m]和temp[m+1..t]归并为有序的TR[s..t]。
注意边界情况。比如1,5,6和2,3,4合并。合并好1,2,3,4,之后还要把5,6复制进来。
1 //将有序的temp[s..m]和temp[m+1..t]归并为有序的TR[s..t] 2 void Merge(int temp[],int TR[],int s,int m,int n) 3 { 4 int j,k,l; 5 for(j=m+1,k=s;s<=m && j<=n;k++)//将temp中记录由小到大地并入TR 6 { 7 if (temp[s]<temp[j]) 8 TR[k]=temp[s++]; 9 else 10 TR[k]=temp[j++]; 11 } 12 if(s<=m) 13 { 14 for(l=0;l<=m-s;l++) 15 TR[k+l]=temp[s+l];//将剩余的temp[s..m]复制到TR 16 } 17 if(j<=n) 18 { 19 for(l=0;l<=n-j;l++) 20 TR[k+l]=temp[j+l];//将剩余的temp[j..n]复制到TR 21 } 22 }
参考上面的代码,可以accept的程序如下:
1 class Solution { 2 public: 3 /** 4 * @param A and B: sorted integer array A and B. 5 * @return: A new sorted integer array 6 */ 7 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { 8 // write your code here 9 vector<int> C(A.size()+B.size()); 10 int i,j,k; 11 for(i=0,j=0,k=0;i<A.size()&&j<B.size();k++) 12 if(A.at(i)<=B.at(j)) 13 C.at(k)=A.at(i++); 14 else 15 C.at(k)=B.at(j++); 16 if(i<A.size()) 17 { 18 for(int t=0;t<A.size()-i;t++) 19 C.at(k+t)=A.at(i+t); 20 } 21 if(j<B.size()) 22 { 23 for(int t=0;t<B.size()-j;t++) 24 C.at(k+t)=B.at(j+t); 25 } 26 return C; 27 } 28 };
可以Accept的正确程序2:
1 class Solution { 2 public: 3 /** 4 * @param A and B: sorted integer array A and B. 5 * @return: A new sorted integer array 6 */ 7 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { 8 vector<int> C; 9 int i = 0, j = 0; 10 while (i < A.size() && j < B.size()) { 11 if (A[i] < B[j]) { 12 C.push_back(A[i++]); 13 } else { 14 C.push_back(B[j++]); 15 } 16 } 17 while (i < A.size()) { 18 C.push_back(A[i++]); 19 } 20 while (j < B.size()) { 21 C.push_back(B[j++]); 22 } 23 return C; 24 } 25 };
转载于:https://www.cnblogs.com/hslzju/p/5447058.html
[容易]合并排序数组相关推荐
- LintCode 6.合并排序数组 ||
import org.junit.Test;import java.util.Arrays;public class MergeSort {/*** @param A: sorted integer ...
- lintcode:合并排序数组
题目: 合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果 ...
- 64. 合并排序数组 II
合并两个排序的整数数组A和B变成一个新的数组. 样例 给出 A = [1, 2, 3, empty, empty], B = [4, 5] 合并之后 A 将变成 [1,2,3,4,5] 看的出来A后面 ...
- 九章算法面试题86 合并排序数组
原文网址 www.jiuzhang.com 问题详情 合并两个排序的整数数组A和B变成一个新的数组. 在线评测本题: http://www.lintcode.com/zh-cn/problem/mer ...
- python两个数组合并排序_2、合并排序数组
1.问题描述 问题描述:合并两个升序的整数数组A和B,形成一个新的数组,新数组也要有序. 2.问题示例 输入A[1],B=[1],输出[1, 1],返回合并后的数组. 输入A=[2, 4, 6, 7] ...
- python合并排序数组
问题描述 合并两个升序的整数列表a和b,形成一个新的列表,新列表也要有序. 问题示例 输入 a = [1,2,3,4] b = [2,4,5,6],输出 [1, 2, 2, 3, 4, 4, 5, 6 ...
- [LintCode笔记了解一下]64.合并排序数组
Given two sorted integer arrays A and B, merge B into A as one sorted array. 思路: 因为A的后面的部分都是空的留出来给我们 ...
- 链表节点合并排序:数组和单链表
每日一贴,今天的内容关键字为链表节点 1 数组合并排序 1.1 合并两个已排序好的数组 需要额定的存储空间用来存储合并结果 //merge two array which are already so ...
- 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数
题目:LeetCode 004 Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of size m an ...
最新文章
- 基于视觉惯性里程计的无监督深度补全方法
- 重排序、hb、ConcurrentHashMap弱一致性(jdk1.6)
- mysql 添加时间戳列
- 2011/5/18工作笔记
- 基于HTML5技术的电力3D监控应用(二)
- 用一年的时间,依靠SEO创造一个成功的网站
- python控制树莓派相机_玩转树莓派-Raspberry,控制单反相机进行可编程摄影
- 谐音梗?小米推出首款短视频应用“朕惊视频”:专为年轻人打造
- 基于django的视频点播网站开发-step12-后台订阅功能...
- 19-random猜数
- PHP裁剪图片且保留背景透明
- java+ssh实现级联下拉列表(以行业大类和详细类为例)
- 最简单AnyLogic安装教程——天津理工大学
- qcnfa435_【路由知识小课堂番外篇】支持MU-MIMO技术设备一览表(2017.9.25第一版)...
- 即将截止?四川省2022年工业领域大企业大集团跨越发展激励项目申报条件、材料、要求及流程
- vb如何调用计算机日历,跪求vb.net简易日历制作的源代码
- RestTemplate 超时值
- 如何使scrapy爬取信息不打印在命令窗口中
- 安装打印机提示未能添加服务器,无法安装打印机解决方法
- cocoscreator使用说明
热门文章
- etl spring_山寨一个Spring的@Component注解
- c++ 判断数学表达式有效性_2009年高考数学上海卷难度如何?独特的题型设计,让你耳目一新...
- 计算机组成原理:原码、补码一位乘,Booth算法
- Mysql自增id用完怎么办?
- openresty入门与配置了解
- 看雪 好文 汇集贴(持续更新)
- nearly,about,almost的区别
- Android逆向系列之ARM语法篇
- Ionic APP 热更新 之 产品发布状态下的热更新搭建,去local-dev-addon插件
- Volley 源码分析