数组--将两个有序数组a,b合并成新的有序数组c

有两个有序的数组a,b;长度分别是m,n;请使用时间复杂度为m+n的算法,将此两个数组重新合并构成一个有序数组c.

 1 static void Main(string[] args)
 2         {
 3             int[] a = { 1, 3, 5, 6, 6, 7, 14 };
 4             int[] b = { 2, 3, 4, 6, 7, 13, 18, 20 };
 5
 6             var cLength = a.Length + b.Length;
 7             int[] c = new int[cLength];
 8             int i = 0, j = 0, k = 0;
 9
10             for (i = 0, j = 0, k = 0; (i < a.Length || j < b.Length) && k < (a.Length + b.Length); i++, j++, k++)
11             {
12                 if (i>=a.Length)
13                 {
14                     c[k] = b[j];
15                     continue;
16                 }
17
18                 if (j >= b.Length)
19                 {
20                     c[k] = a[i];
21                     continue;
22                 }
23
24                 if (a[i] > b[j])
25                 {
26                     c[k] = b[j];
27                     i--;
28                 }
29                 else
30                 {
31                     c[k] =a[i];
32                     j--;
33                 }
34             }
35
36             for (int l = 0; l < c.Length; l++)
37             {
38                  System.Console.Write(c[l]);
39             }
40
41             System.Console.Read();
42         }

这是,不久去某公司遇到的一个问题,其实这个理解题目的意思,仔细想想逻辑,还是做出来的。可能刚开始做的时候有点紧张,最怕笔试题的公司,

太久没拿笔写字了,看着歪歪扭扭的字迹更是难受,写的乱七八糟!还好,向面试官表达清楚了逻辑!

看来需要静下心来,练练字了! 马上要春节了,新春快乐!希望自己在2015年生活和事业上能更进一步。

fighting for me,my dear darling,my family, ~O(∩_∩)O~。

时间: 2025-01-05 15:21:31

数组--将两个有序数组a,b合并成新的有序数组c的相关文章

089-PHP数组运用 - 通过循环函数取出部分成员合并成新数组

<?php function myfunc($arr){ //定义过滤函数 $j=count($arr); for($i=0;$i<$j;$i++){ if($arr[$i]>=0&&$arr[$i]<=100) $n_arr[]=$arr[$i]; } return $n_arr; } $arr=array(2,34,5,175,168,94,942,105); echo '原来的数组信息:<br />'; print_r($arr); $newarr

对N个数组进行操作。先把这N个一维数组合并成一个2为数组;然后进行操作

using System;using System.Collections.Generic;using System.Linq;using System.Collections;using System.Text;using System.Diagnostics; namespace Hecha.Test{ class Program { static void Main(string[] args) { List<string>[] aa = new List<string>[5

求两个有序序列合并成新有序序列的中位数,求第k小数

此算法涉及一个重要数学结论:如果A[k/2-1]<B[k/2-1],那么A[0]~A[k/2-1]一定在第k小的数的序列当中,可以用反证法证明. 更加一般的结论是:k=pa+pb,如果A[pa-1]<B[pb-1],那么A[0]~A[pa-1]一定在第k小的数的序列当中. 算法思想如下: 1,假设A长度为m,B长度为n,m>n,反之亦然. 2,拆分k=pa+pb. 3,如果A[pa-1]<b[pb-1],那证明第A[0]~A[pa-1]一定在合并后k小数序列中.所以,可以把A的前面

链表 | 将递增有序的两个链表的公共元素合并为新的链表

王道P38T14 主代码: LinkList common_subList(LinkList &A,LinkList &B){ LNode *C=new LNode,*pC=C; C->next=NULL; LNode* pA=A->next,*pB=B->next; while(pA!=NULL && pB!=NULL){ if(pA->data < pB->data){ pA=pA->next; }else if(pA->

php 二维数组 根据条件合并成新的二维数组

$_data = []; $order_id = ''; foreach ($data as $k => $v) { if($order_id != $v['order_id']){ $arr = []; $arr['id'] = $v['id']; $arr['order_number'] = $v['order_number']; $arr['edit_time'] = $v['edit_time']; $arr['order_state'] = $v['order_state']; $ar

如何将两个/多个PDF文件合并成一个?

原文链接:https://docsmall.com/blog/how-to-merge-pdf 工作中我们总会遇到将PDF合并的问题,比如: 多次扫描的PDF文件,需要合并到一个 PDF文件需要追加一些其他文件 …… 如果电脑上没有安装合适的软件的话,确实是个棘手的问题. 知乎有一个怎么把多个PDF合并在一起? 的问题,浏览量有4万+,通过我回答下的留言,PDF合并虽然看起来很简单,但并没有一个简单方便的解决方案. 不过,使用docsmall可以轻松解决这个问题. 首先,进入docsmall的P

合并两个有序数组为一个新的有序数组

题目:有两个有序数组a,b,现须要将其合并成一个新的有序数组. 简单的思路就是先放到一个新的数组中,再排序.可是这种没体现不论什么算法,这里考的不是高速排序等排序算法.关键应该是怎样利用有序已知这个条件.能够这样想.如果两个源数组的长度不一样,那么如果当中短的数组用完了,即所有放入到新数组中去了,那么长数组中剩下的那一段就能够直接拿来放入到新数组中去了. public class MergeTwoSortedArrays { public static int[] merge(int[] a,

leetcode-1 Two Sum 找到数组中两数字和为指定和

 问题描述:在一个数组(无序)中快速找出两个数字,使得两个数字之和等于一个给定的值.假设数组中肯定存在至少一组满足要求. <剑指Offer>P214(有序数组) <编程之美>P176 Que:Given an array of integers, find twonumbers such that they add up to a specific target number. The function twoSum should return indices ofthe tw

C++函数传递数组的两种方式

数组与指针. 传首地址过去,然后通过地址输出数组元素. 1.一维数组 #include<iostream> using namespace std; #include <cstring> void farray1(int array1[],int len)//注:此处是无法通过array1得到长度的,只能通过传参,因为其是数组首地址. { for(int i=0;i<len;i++) { //cout<<array1[i]<<endl; cout<