88.[Leetcode]Merge Sorted Array
2016-06-10 00:25
323 查看
Pre:
一开始用了sort,果断慢的要死,后面好歹是想办法提速了一下Version1
class Solution { public: void merge(vector<int>& num1, int m, vector<int>& num2, int n) { // 时刻记住边界情况 if(!n) return; int it_1,it_2,temp; for(int i=0; i<m; i++){ it_1 = num1[i]; it_2 = num2[0]; if(it_1 > it_2) { num1[i] = it_2; // 先把nums_1换了 num2[0] = it_1; // 遍历nums2,直到遇到比较小的,此时遍历之后可以考虑使用快排 for(int j=1; j<n; j++){ if(num2[j] >= num2[j-1]) { break; } else { temp = num2[j]; num2[j] = num2[j-1]; num2[j-1] = temp; } } } } for(int i=0; i<n; i++) { num1[m+i] = num2[i]; } } };
大神算法
之前也有类似的题,但是这道题我尽然没有想到。那就是倒着来。逆向思维public void merge(int[] nums1, int m, int[] nums2, int n) { int p=m+n; int p1=m-1; int p2=n-1; while(--p>=0){ if((p1>=0 && p2>=0) && nums1[p1] > nums2[p2]) nums1[p] =nums1[p1--]; else if(p2>=0) nums1[p] =nums2[p2--]; } }
简单到炸
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [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 题解