【刷题记录】合并两个有序数组、移除元素

简介: 【刷题记录】合并两个有序数组、移除元素

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.题目链接:

T1:LINK

T2:LINK

2.详解思路:

T1:

思路1:弄个新数组,比较两个数组中的值,哪个小就把哪个值放到新数组中。

分析1:时间复杂度:O(N);空间复杂度:O(N)

但是显然在本题中题目明确表示要放在原数组中,否定该思路。

思路2:把nums2内容拷贝到nums1有效数据的后面,再进行排序

分析2:否定,仅排序而言时间复杂度:O(N*logN)

思路3:造三个指针,倒序条件赋值

分析3:时间复杂度O(N) 空间复杂度O(1) so:优秀算法

代码如下:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int end1 = m - 1;
    int end2 = n - 1;
    int end = m + n - 1;
    //开始赋值
    while(end1>=0&&end2>=0)
    {
        if(nums1[end1]>nums2[end2])
        {
            nums1[end--] = nums1[end1--];
        }
        else
        {
            nums1[end--] = nums2[end2--];
        }
    }
    //当end1或者end2小于0了就跳出循环了,就会出现两种局面
    //局面1:end1为0但是end2不为0,这时候只需要把nums2中剩下的数据搬到nums1即可
    if(end1<0&&end2>=0)
    {
        int i = 0;
        for(i = end2;i>=0;i--)
        {
            nums1[end--] = nums2[i];
        }
    }
    //局面2:end1不为0但是end2为0,那就不用管了,刚好满足题目
    
}

T2:

思路1:创建一个新数组,原来数组不是我们要移除的元素的我们就拷贝到新数组中即可。

分析1:题目要求原地删除,该做法不满足题意

思路2:我们在原数组中,找到一个要删除的数字我就把他后面的所有元素都往前挪动一位

分析2:否定,时间复杂度O(N*N)

思路3:造两个指针,一个指针记录有效的数字个数,另一个指针在前面探路

分析3:时间复杂度:O(N)优秀思路!

代码实现:

int removeElement(int* nums, int numsSize, int val) {
    int i = 0;
    int p1 = 0;//探路者
    int p2 = 0;//守家者
    for(i = 0;i<numsSize;i++)
    {
        if(nums[p1]==val)
        {
            p1++;
        }
        else
        {
            nums[p2++] = nums[p1++];
        }
    }
    return p2;
}

完。

相关文章
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
SQL 存储 Oracle
Oracle 代码异常查询(三)
Oracle 代码异常查询
874 0
|
Java BI 数据安全/隐私保护
FineReport帆软设计器,远程连接服务器
FineReport帆软设计器,远程连接服务器
874 0
|
测试技术 API 开发者
软件计时器
软件计时器
368 1
|
Linux 网络安全 数据安全/隐私保护
CentOS 7安装配置vsftp并搭建FTP(一)
CentOS 7安装配置vsftp并搭建FTP(一)
24815 0
CentOS 7安装配置vsftp并搭建FTP(一)
|
Shell
怎样删除变量
【9月更文挑战第4天】
198 17
|
SQL 关系型数据库 MySQL
【Python】已解决:ERROR 1064 (42000): You have an error in your SQL syntax. check the manual that correspo
【Python】已解决:ERROR 1064 (42000): You have an error in your SQL syntax. check the manual that correspo
3788 0
|
存储 算法 C++
一篇文章让你熟悉unordered_map及其模拟实现(下)
unordered_map哈希策略函数 1. load_factor float load_factor() const noexcept; load_factor 函数用于获取当前
|
Python
力扣每日一题:374.猜数字大小 python二分查找的基础公式!
力扣每日一题:374.猜数字大小 python二分查找的基础公式!
330 0
|
分布式计算 Java Hadoop
Scala简介与Scala的下载安装
Scala简介与Scala的下载安装
Scala简介与Scala的下载安装
下一篇
开通oss服务