`
huntfor
  • 浏览: 201307 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Merge Sorted Array

 
阅读更多

新博文地址:[leetcode]Merge Sorted Array

http://oj.leetcode.com/problems/merge-sorted-array/

 

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.

 合并两个排好序的数组A,B,不创建新的数组,即把B数组插入到A数组中,参数m和n分别是数组a和b的初始化的元素个数

 

一般而言,我们如果正向遍历数组不满足时间复杂度的时候,不妨尝试一下逆向遍历。

比如说1,7,9,11和2,3,4,5,8当比较1 和2的时候,不做操作,当比较7和2的时候,将7后移,当比较7和3的时候,再次将7后移,当比较7和4的时候....

我们发现,正向遍历时,某个元素移位后的位置并不一定的最终位置。因此不妨从后向前遍历,两个数组元素一共有9个,那么比较11和8,显然,11是两个数组中最大的,其最终下标是8,再比较9和8,同理,确定9的最终下标,以此类推。

还要注意边界,当m == 0或者n == 0时的相关处理

代码如下:

    public void merge(int A[], int m, int B[], int n) {
		int index = m + n - 1;
    	while(index >= 0){
    		if(m >= 1 && n >= 1 && A[m - 1] > B[n - 1]){
    			A[index] = A[m - 1];
    			m--;
    		}else if(m >= 1 && n >= 1 && A[m - 1] <= B[n - 1]){
    			A[index] = B[n - 1];
    			n--;
    		}
    		index--;
    	}
    	if(m == 0){
			for(int i = 0; i < n; i++){
				A[i] = B[i];
			}
			return;
		}
		if(n == 0){
			return;
		}
    }

 

分享到:
评论

相关推荐

    Merge Sorted Array合并排序数组leetcode

    Merge Sorted Array 合并 排序 数组 leetcode

    python-leetcode题解之088-Merge-Sorted-Array

    python python_leetcode题解之088_Merge_Sorted_Array

    java-leetcode题解之088-Merge-Sorted-Array

    java入门 java_leetcode题解之088_Merge_Sorted_Array

    js-leetcode题解之88-merge-sorted-array.js

    javascript js_leetcode题解之88-merge-sorted-array.js

    c语言-leetcode题解之0088-merge-sorted-array.zip

    c语言基础 c语言_leetcode题解之0088_merge_sorted_array.zip

    LeetCode C++全解

    Merge Sorted Array vi. Sum vii. Find Minimum in Rotated Sorted Array viii. Largest Rectangle in Histogram ix. Maximal Rectangle x. Palindrome Number xi. Search a 2D Matrix xii. Search for a Range ...

    算法刷题笔记leetcode/lintcode

    - Merge Sorted Array II(合并两个有序数组II) - Median(中位数) - Partition Array by Odd and Even(奇偶分割数组) - **Binary Search**(二分查找) - Kth Largest Element(第k个最大元素) - First ...

    leetcode写题闪退-LeetCode:leetcodeOJ

    leetcode写题闪退 #*的多少代表此题的有意思程度 有几题第一次写的时候思绪比较混乱: *****Regular Expression Matching 2014.10.29 对于Find Minimum in Rotated Sorted Array II 和 Find Minimum in Rotated ...

    Coding Interview In Java

    20 Merge Sorted Array 61 ... ... 231 Counting Bits 561 232 Maximum Product of Word Lengths 563 233 Gray Code 565 234 Permutations 567 235 Permutations II 571 236 Permutation Sequence 573 237 Generate ...

    Leetcode题目+解析+思路+答案.pdf

    - **Merge Sorted Array**:合并两个已排序的数组,使合并后的数组仍然有序。 - **Sum**:计算数组的总和。 - **Find Minimum in Rotated Sorted Array**:在一个旋转了的有序数组中找到最小值。 - **Largest ...

    LeetCode题解(java语言实现).pdf

    * Merge Sorted Array:该题目要求合并两个排序数组,实现方法使用了迭代算法。 * Valid Parentheses:该题目要求检查括号是否匹配,实现方法使用了栈的数据结构。 * Implement strStr():该题目要求实现字符串查找...

    LeetCode最全代码

    26 | [Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)| [C++](./C++/remove-duplicates-from-sorted-array.cpp) [Python](./Python/remove-duplicates...

    LeetCode 刷题汇总1

    * 删除链表中的重复项(Remove Duplicates from Sorted Array):删除链表中的重复项。 * 从列表末尾删除第N个节点(Remove Nth Node From End of List):从链表末尾删除第N个节点。 5. 栈和队列操作: * 有效的...

    Leetcode book刷题必备

    根据提供的文件信息,我们能提炼出一系列IT相关知识点,主要是围绕LeetCode这本电子书的主题——即编程面试题目解答。此电子书内容丰富,涵盖了算法和数据结构中常见的问题及其解决方案,非常适合准备技术面试的读者...

    leetcode-js:算法和数据结构是一个程序员的灵魂,LeetCode JavaScript TypeScript 题解

    88.合并两个有序数组 (Merge Sorted Array) 100.相同的树 (Same Tree) 104.二叉树的最大深度 (Maximum Depth of Binary Tree) 118.杨辉三角 (Pascal's Triangle) 119.杨辉三角 II (Pascal's Triangle)

    _leetcode-python.pdf

    - Search in Rotated Sorted Array II: 假设按照升序排序的数组在预先未知的某个点上进行了旋转,该问题要求在旋转后的数组中搜索特定元素。 这些知识点涵盖了数据结构和算法的核心概念,以及如何用Python语言实现...

    leetcode答案-LeetCode:Swift中的LeetCode

    Merge Two Sorted Lists Easy #26 Remove Duplicates from Sorted Array Easy #27 Remove Element Easy #35 Search Insert Position Easy #38 Count and Say Easy #53 Maximum Subarray Easy #66 Plus One Easy #70 ...

    LeetCode leetcode部分题解答代码实现

    * Merge Sorted Array:给定两个已排序的数组,合并两个数组,并返回新数组。这个题目需要使用合并排序的思想,将两个数组合并,并返回新数组。 * Sum:给定一个数组,返回数组的和。这个题目非常简单,只需要遍历...

    Leetcode 题解.pdf

    双指针可以用来解决有序数组中的两数之和问题,例如 Leetcode 的 167 题 Two Sum II - Input array is sorted( Easy)。 在这个题目中,我们可以使用双指针来遍历数组,一个指针指向值较小的元素,一个指针指向值...

    算法-leetcode-剑指offer上的题很多

    - **合并排序数组(Merge Sorted Array)**: 将两个排序数组合并成一个新的排序数组。 - **寻找数组中的中位数(Median of Two Sorted Arrays)**: 在两个排序数组中找到中位数。 - **快速选择算法(Kth Largest Element)...

Global site tag (gtag.js) - Google Analytics