`
huntfor
  • 浏览: 195563 次
  • 性别: 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

    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写题闪退-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最全代码

    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-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答案-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 ...

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode leetcode ...Merge Two Sorted Lists 22. Generate Parentheses 25. Reverse Nodes in k-Group 26. Remove Duplicates from Sorted Array 27. Remove Element 28. Implement strStr() 3

    leetcode2sumc-Leetcode_questions:Leetcode_questions

    leetcode 2 和 ...Array(c++) 00 94.Binary Tree Inorder Traversal(c++:tree traversal inorder) 100.Same Tree(c++) 101.对称树(c++) 104.二叉树的最大深度(c++) 108.将排序数组转换为二叉搜索树

    javalruleetcode-LeetCode::lollipop:个人LeetCode习题解答仓库-多语言

    java lru leetcode :ice_cream: LeetCode Kindem 的个人 LeetCode 题解仓库,欢迎交流学习。...Array 48 Rotate Image 53 Maximum Subarray 55 Jump Game 56 Merge Intervals 64 Minimum Path Sum 73

    leetcode-python:Leetcode Python解决方案和解释。 也是准备软件工程师面试的指南

    总览 ... 例如, merge-sorted-array.py的解决方案位于https://leetcode.com/problems/merge-sorted-array/ 。 Leetcode类似问题 我发现一起解决类似的问题很有意义,这样当我们遇到新问题时,我们可以

    Leetcode经典01背包-algo:一些记录

    Leetcode经典01背包 algo 1. 数据结构与算法 数组,链表,(串和序列) 堆,栈,队列 树,图 排序,搜索 贪心,回溯,动态规划 堆:一种完全二叉树,任意节点大于左右孩子(大顶堆) 树:二叉树,DFS,BFS ...Merge So

    leetcode添加元素使和等于-LeetCodeNotes:力码笔记

    leetcode添加元素使和等于 LeetCodeNotes Array: 4. Median of Two Sorted Arrays 思路: 基于二分查找的思想 88. Merge Sorted Array 描述:合并两个有序数组,将B合并入A,A长度刚好为A.length + B.length nums1 =...

    Leetcode-Algorithm-Exercise

    Leetcode算法练习 Leetcode算法练习 ...MaximumSubarray 58_LengthOfLastWord 66_PlusOne 67_AddBinary 69_Sqrt(x) 70_ClimbStairs 83_RemoveDuplicatesFromSortedList 88_MergeSortedArray 100_SameT

    leetcode答案-leetcode:每日三题

    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 ...

    leetcode-liwang:leetcode学习笔记

    liwangStudy note for leetcode.Easy001 Two SumUsing hash map.020 Valid ParenthesesUsing stack can achieve O(n) space and O(n) time.Using Regular match, the complexity depends on the regular algorithm....

    cpp-算法精粹

    Remove Duplicates from Sorted Array II Longest Consecutive Sequence Two Sum 3Sum 3Sum Closest 4Sum Remove Element Move Zeroes Next Permutation Permutation Sequence Valid Sudoku Trapping Rain Water ...

    leetcode中文版-LeetCode:LeetcodeC++/Java

    leetcode中文版 LeetCode # Title Chinese Tag Solution 1 Two Sum 两数之和 array,hash 2 Add Two Numbers 两数相加 math ...Sorted ...pointers,array ...Merge Two Sorted Lists 合并两个有序链表 lin

    leetcode跳跃-leetcode:leetcode

    merge 2 sorted array into a 3rd empty array. ##2019-03-28 斐波那契数列(Fibonacci sequence), 又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci) 以兔子繁殖为例子而引入,故又称为...

    leetcode双人赛-leetcode-solution:没事可做的时候,就来刷刷题吧

    leetcode双人赛 leetcode-solution 闲暇之余,刷一下题,弥补数据结构和算法的短板 概述 之前写过一个 leetcode 的一点题解,不过后来就断了,现在重新...merge-sorted-array 杨辉三角 pascals-triangle 杨辉三角 II pa

Global site tag (gtag.js) - Google Analytics