Leetcode每日一题:88.merge-sorted-array(合并两个有序数组)
思路:最容易想到的就是归并排序的归并策略了,时间复杂度O(m+n),空间复杂度O(n);但是官网给出了另一个难以想到的妙招,就是反向归并,因为nums1最后面的n个元素是空的,所以从后端开始归并,每次选择较大的放入nums1的最后面;
奇怪的是,明明空间复杂度差了O(m),但为什么跑出来结果差不多呢?
void merge(vector<int> &nums1, int m, vector<int> &nums2, int n){vector<int> a(m,0);int i = 0, j = 0;int index = 0;for (int k = 0; k < m; k++){a[k] = nums1[k];}while (i < m && j < n){if (a[i] < nums2[j]){nums1[index++] = a[i++];}else{nums1[index++] = nums2[j++];}}while (i < m){nums1[index++]=a[i++];}while(j<n){nums1[index++]=nums2[j++];}}
void merge(vector<int> &nums1, int m, vector<int> &nums2, int n){int i = m-1, j = n-1;int index = m + n - 1;while (i >= 0 && j >= 0){if (nums1[i]<nums2[j]){nums1[index--]=nums2[j--];}else{nums1[index--]=nums1[i--];}}while(i>=0){nums1[index--]=nums1[i--];}while(j>=0){nums1[index--]=nums2[j--];}}
Leetcode每日一题:88.merge-sorted-array(合并两个有序数组)相关推荐
- Merge Sorted Array 合并两个有序数组
1.原题目 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may ass ...
- leetcode python3 简单题88. Merge Sorted Array
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第八十八题 (1)题目 英文: Given two sorted integer a ...
- LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- leetcode 88 Merge Sorted Array
lc88 Merge Sorted Array 因为两个array都已经排好序了,每次取两者间较小的放入新array中,当一个array空了,直接把另一个array剩下的全放入新array即可 1 c ...
- LeetCode in Python-21. Merge Two Sorted Lists 合并两个有序链表
Merge Two Sorted Lists 合并两个有序链表 题目 解法1. 解法2. 出处 题目 解法1. # Definition for singly-linked list. # class ...
- LeetCode 88合并两个有序数组89格雷编码
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- Java实现 LeetCode 88 合并两个有序数组
88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元 ...
- leetcode 88. 合并两个有序数组
88. 合并两个有序数组 class Solution {public:void merge(vector<int>& nums1, int m, vector<int> ...
- LeetCode 88. 合并两个有序数组 golang
88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
- LeetCode——合并两个有序数组
LeetCode--合并两个有序数组 题目描述: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nu ...
最新文章
- R单样本t检验(ONE-SAMPLE T-TEST)
- 【转载】C++创建对象的两种方法
- 移动前端开发基础与优化
- 洛谷 P2347 砝码称重
- Problem C: 爬楼梯
- xstream 转java_xstream转换xml和Java对象
- Python 标准库 —— 文件解压(zip、gz、pkl、tar)
- 【NCRE】2020年9月全国计算机等级考试,计算机二级MS Office高级应用划水贴
- 希尔加密法matlab,希尔密码加密解密
- wps编号无法继续_wps的多级编号出问题了
- Python爬虫网页元素定位术,就在这篇博客中
- openharmony容器组件之Refresh
- 电子签章过程中的原始数据处理
- Error unpacking rpm package initscripts解决方案
- 剩余电流动作继电器的应用探讨
- “伪QQ”---一个即时聊天通讯的工具
- 知乎里怎么看个人简介_如何做一份优秀的简历?
- oracle bug号,《一次Oracle bug的故障排查过程思考》的问题重现解决
- 平板电脑4g运行内存够用吗_如何通过Windows平板电脑与其他设备共享3G / 4G Internet连接...
- 【双目视觉】 SGBM算法应用(Python版)