当前位置: 首页 > news >正文

茂名专业网站建设公司广州专门做网站的公司有哪些

茂名专业网站建设公司,广州专门做网站的公司有哪些,一个人可以完成网站建设吗,wordpress阅读量没改力扣88题:合并两个有序数组 题目描述 给定两个按非递减顺序排列的整数数组 nums1 和 nums2,以及它们的长度 m 和 n,要求将 nums2 合并到 nums1,使得合并后的数组仍按非递减顺序排列。 输入与输出 示例 1: 输入&am…

力扣88题:合并两个有序数组

题目描述

给定两个按非递减顺序排列的整数数组 nums1nums2,以及它们的长度 mn,要求将 nums2 合并到 nums1,使得合并后的数组仍按非递减顺序排列。

输入与输出

示例 1

输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]

示例 2

输入:nums1 = [1], m = 1nums2 = [], n = 0
输出:[1]

示例 3

输入:nums1 = [0], m = 0nums2 = [1], n = 1
输出:[1]

算法思路

1. 问题分析

题目要求我们原地合并两个数组:

  • nums1 的后半部分预留了足够的空间(大小为 m + n m + n m+n)。
  • nums1nums2 已经是有序的。

2. 双指针逆向合并

我们从两个数组的尾部开始比较,选择较大的元素放入 nums1 的末尾。具体步骤如下:

2.1 初始化指针
  • 定义指针 p1:指向 nums1 的有效元素的末尾(即索引 m − 1 m - 1 m1)。
  • 定义指针 p2:指向 nums2 的末尾(即索引 n − 1 n - 1 n1)。
  • 定义指针 p:指向 nums1 的总末尾(即索引 m + n − 1 m + n - 1 m+n1)。
2.2 比较与插入
  • 如果 nums1[p1] > nums2[p2],将 nums1[p1] 放入 nums1[p],并移动 p1p
  • 如果 nums1[p1] <= nums2[p2],将 nums2[p2] 放入 nums1[p],并移动 p2p
2.3 拷贝剩余元素
  • 如果 nums2 中还有未处理的元素,直接将它们拷贝到 nums1 的前面。
  • 如果 nums1 中还有未处理的元素,则无需额外操作。
2.4 循环终止条件
  • p1 < 0p2 < 0 时,循环结束。

代码实现

以下是修正后的完整代码:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int i = nums1Size - 1; // 从 nums1 的尾部开始填充while (m > 0 || n > 0) {if (n > 0 && (m == 0 || nums1[m - 1] < nums2[n - 1])) {nums1[i--] = nums2[--n];} else {nums1[i--] = nums1[--m];}}
}

代码详解

1. 初始化指针

定义三个指针:

  • p1 = m - 1:指向 nums1 有效部分的末尾。
  • p2 = n - 1:指向 nums2 的末尾。
  • p = m + n - 1:指向 nums1 的尾部。

2. 从尾部向前合并

通过比较 nums1[p1]nums2[p2],将较大的元素放入 nums1[p],并更新指针。以下是操作逻辑:

if (n > 0 && (m == 0 || nums1[m - 1] < nums2[n - 1])) {nums1[p--] = nums2[--n];
} else {nums1[p--] = nums1[--m];
}

3. 拷贝剩余的 nums2

如果 nums2 中还有未处理的元素,直接拷贝:

while (n > 0) {nums1[p--] = nums2[--n];
}

复杂度分析

时间复杂度

  • 遍历数组时,每次比较、移动只需 O ( 1 ) O(1) O(1) 时间,总体复杂度为 O ( m + n ) O(m + n) O(m+n)

空间复杂度

  • 使用了常量级的额外空间,复杂度为 O ( 1 ) O(1) O(1)

测试用例

测试用例 1

输入

nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3

输出

[1,2,2,3,5,6]

测试用例 2

输入

nums1 = [1], m = 1
nums2 = [], n = 0

输出

[1]

测试用例 3

输入

nums1 = [0], m = 0
nums2 = [1], n = 1

输出

[1]

测试用例 4

输入

nums1 = [2,2,2,0,0,0], m = 3
nums2 = [2,2,2], n = 3

输出

[2,2,2,2,2,2]
http://www.yayakq.cn/news/368927/

相关文章:

  • 购买一个网站需要多少钱?手工制作小玩具简单又好玩
  • 网站优化怎么看营销方案设计
  • 建站公司走量渠道云尚网络科技有限公司域名主机
  • 男女的做那个视频网站纳雍网站建设公司
  • 百度网站统计大连建设工程信息网怎么没有了
  • 网站开发的英文文献wordpress 代码 工具栏
  • 国外做农产品有名的网站有哪些网站怎么写容易获得关键词排名
  • 教你免费申请个人网站网站开发技术文档范例
  • 现代郑州网站建设百度优化
  • 安康网站设计wordpress主题首页文件夹
  • 网站建设|宁波网站制作出售
  • 华创网站建设国内搜索引擎优化的公司
  • 网页制作与网站建设ppt网站注册免费qq
  • 30岁学网站开发重庆商务网站建设
  • 网站流程图设计网站定制牛七科技
  • 江苏成章建设集团有限公司官方网站wordpress 用户系统
  • 黄冈网站推广在线观看婚庆网站建设策划案费用预算
  • 万网没备案怎么做网站网站建设前期准备方案
  • 新郑郑州网站建设flash做网站轮播图
  • 网站系统开发报价单郑州建材网站建设
  • 广州越秀建网站的公司住房与城乡建设部网站
  • 工作纪律和生活纪律研讨发言材料历下区百度seo
  • 营销型网站建设调查表怎么把网站开发成crx
  • 产品设计私单网站做网站需学什么
  • 个人服装定制网站手机微信官方网站首页
  • 个人网站 空间山东网站优化公司
  • 佛山白坭网站建设营销网站推广策略
  • 厦门的网站建设公司天津平台网站建设哪家好
  • 中国十佳企业网站设计公司湖北省建设厅网站a群
  • 自贡网站推广一般电商都是在哪些网站上做