[容易]合并排序数组 II

题目来源:http://www.lintcode.com/zh-cn/problem/merge-sorted-array/

C++版 VS2012测试通过

 1 //#include <iostream>
 2 //#include <vector>
 3 //using namespace std;
 4
 5 class Solution {
 6 public:
 7     /**
 8      * @param A: sorted integer array A which has m elements,
 9      *           but size of A is m+n
10      * @param B: sorted integer array B which has n elements
11      * @return: void
12      */
13     void mergeSortedArray(int A[], int m, int B[], int n) {
14         // write your code here
15         vector<int> v;
16         int i=0,j=0,k=0;
17         while(i<m && j<n)
18         {
19             if(A[i]<B[j])
20                 v.push_back(A[i++]);
21             else
22                 v.push_back(B[j++]);
23         }
24         while(i<m)
25             v.push_back(A[i++]);
26         while(j<n)
27             v.push_back(B[j++]);
28         vector<int>::iterator it;
29         for(it=v.begin();it<v.end();it++)
30             A[k++]=*it;
31     }
32 };
33
34 //测试
35 //int main()
36 //{
37 //    Solution s;
38 //
39 //    int a[5]={1,2,4};
40 //    int b[2]={3,5};
41 //    s.mergeSortedArray(a,3,b,2);
42 //    for(int i=0;i<5;i++)
43 //        cout<<a[i]<<" ";
44 //}

Python2.7版 spider测试通过

 1 class Solution:
 2     """
 3     @param A: sorted integer array A which has m elements,
 4               but size of A is m+n
 5     @param B: sorted integer array B which has n elements
 6     @return: void
 7     """
 8     def mergeSortedArray(self, A, m, B, n):
 9         # write your code here
10         i, j, index = m - 1, n - 1, m + n - 1
11         while i >= 0 and j >= 0:
12             if A[i] > B[j]:
13                 A[index] = A[i]
14                 index, i = index - 1, i - 1
15             else:
16                 A[index] = B[j]
17                 index, j = index - 1, j - 1
18         while i >= 0:
19             A[index] = A[i]
20             index, i = index - 1, i - 1
21         while j >= 0:
22             A[index] = B[j]
23             index, j = index - 1, j - 1
24
25 #测试
26 #if __name__=="__main__":
27 #    s=Solution()
28 #    a=[1,2,4,0,0]
29 #    b=[3,5]
30 #    s.mergeSortedArray(a,3,b,2) 
时间: 2024-11-13 10:52:48

[容易]合并排序数组 II的相关文章

lintcode 容易题:Merge Sorted Array II 合并排序数组 II

题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] 注意 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素. 解题: 这里给的是两个数组,上题给的是ArrayList格式,比较好处理,重新定义一个长度m+n的数组,太无节操,其他方法一时想不起来 官方解题,方法很技巧,可以倒着排序,这样就很简单了 Java程序: class

lintcode_64.合并排序数组 II

合并两个排序的整数数组A和B变成一个新的数组. 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素. 样例 给出 A = [1, 2, 3, empty, empty], B = [4, 5] 合并之后 A 将变成 [1,2,3,4,5] class Solution: """ @param: A: sorted integer array A which has m elements, but size of A is m+n @param: m:

LintCode 6. 合并排序数组 II

题目:合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果其中一个数组很大而另一个数组很小? 解:简单的归并排序. class Solution { public: /* * @param A: sorted integer array A * @param B: sorted integer array B * @return: A new sorted integer

[LintCode] 合并排序数组II

1 class Solution { 2 public: 3 /** 4 * @param A: sorted integer array A which has m elements, 5 * but size of A is m+n 6 * @param B: sorted integer array B which has n elements 7 * @return: void 8 */ 9 void mergeSortedArray(int A[], int m, int B[], i

【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】

[088-Merge Sorted Array(合并排序数组)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 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 +

[LeetCode]6. Merge Sorted Arrays合并排序数组

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 initi

LeetCode 88 Merge Sorted Array(合并排序数组)(*)

翻译 给定两个排序的整型数组nums1和nums2,将nums2合并到nums1成一个排序数组. 批注: 你可以假设nums1中有足够的空间(空间大于或等于m+n)来存放来自nums2的额外元素. nums1和nums2的初始空间分别是m和n. 原文 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1

LintCode-搜索旋转排序数组 II

跟进"搜索旋转排序数组",假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 您在真实的面试中是否遇到过这个题? Yes 样例 给出[3,4,4,5,7,0,1,2]和target=4,返回 true 标签 Expand 分析:有重复数据还是很蛋疼的,重点在于消重,要使得A[l]严格大于A[r],这样就可以继续判断区间的单调性,从而二分 代码: class Solution { /** * param A :

63. 搜索旋转排序数组 II

跟进"搜索旋转排序数组",假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3,4,4,5,7,0,1,2]和target=4,返回 true 发现lintcode有一点不好就是这种O(n)的解法也能给过 1 bool search(vector<int> &A, int target) { 2 // write your code here 3 vector<int&g