Leetcode 第88题 Merge Sorted Array
2015-12-01 15:30
393 查看
题目:Merge Sorted Array
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 initialized in nums1 and nums2 are m and n respectively.
题目分析:
一开始对题目的分析有错,以为是直接将两个数组按序合并起来题目的含义是在数组1中取m个元素,在数组2中取n个元素,按序合并到数组1中
思路:
采用数组倒序放入数组的方式,优点是能够不覆盖掉其他元素并且不用移动更多的元素采用顺序的方式也可以,只是稍微复杂一些
代码:
C++://采用倒序的方式循环 并且题目的含义是从nums1中取出m个元素,在nums2中取出n个元素合并为新数组nums1;并不是直接nums1数组和nums2数组合并 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i,j,k; for(i=m-1,j=n-1,k=m+n-1;k>=0;--k) { if(i>=0&&(j<0||nums1[i]>nums2[j])) //如果数组nums1没有比较完,数组nums2比较完了或者数组nums1没有比较完,数组nums2没有比较完 数组nums2元素小于数组1元素值 //那么需要将数组1的值放入到后面 { nums1[k]=nums1[i--]; } //如果数组1比较完了,或者是数组2的元素大于数组1的元素 else nums1[k]=nums2[j--]; } } };
Javascript:
/** * @param {number[]} nums1 * @param {number} m * @param {number[]} nums2 * @param {number} n * @return {void} Do not return anything, modify nums1 in-place instead. */ var merge = function(nums1, m, nums2, n) { var a=m-1; var b=n-1; for(var i=m+n-1;i>=0;--i) { if(a>=0 && b<0)//说明a未比较完b已经比较完了那么直接将所有的a都放入数组nums1中 { nums1[i]=nums1[a--]; } else if(a>=0 && b>=0 && nums2[b]<nums1[a]) //说明a未比较完b未比较完并且数组1的值大于数组2的值那么直接将a都放入数组nums1中 { nums1[i]=nums1[a--]; } else { nums1[i]=nums2[b--]; } } };
Javascript:下面这个程序的作用是直接将数组1和数组2合并到数组1中
var merge = function(nums1, m, nums2, n) { var a=0; var b=0; for(var i=0;i<m+n;i++) { if(a==m && b<n) { nums1.push(nums2[b]); b++; } else if(nums2[b]>nums1[i] && b<n) { a++; } else if(nums2[b]<nums1[i] && b<n) { nums1.splice(i,0,nums2[b]); b++; } } }; //注释:默认m和n分别是数组的长度,是一开始理解题目有错
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解