顺序表在线OJ题(详解+图解)

1:原地移除数组中所有的元素val(时间复杂度为O(N)空间复杂度为O(1))

在这里插入图片描述
在这里插入图片描述
题目的大概意思是:用户自行输入一个数组,还要输入一个val的整形值,然后从数组中移除等于val的元素
我们根据题目的要求,时间复杂度为O(N)空间复杂度为O(1)
可以用以下的办法:
用一个for循环将数组遍历,再用if语句进行判断,如果不等于val的值,我们就将这个元素放入数组中,如果等于val的话i就继续+1,不放入数组中
在这里插入图片描述
代码实现如下:

int removeElement(int* nums, int numsSize, int val)
{
    int i = 0;
    int pos = 0;
    int ret=0;
    for (i = 0; i < numsSize; i++)
    {
        if (nums[i] != val)
        {
            nums[pos] = nums[i];
            pos++;
            ret++;
        }
    }
    return ret;
}
2:删除排序数组中的重复项

在这里插入图片描述
在这里插入图片描述
题目的要求是删除数组中的重复项,使其只出现一次,然后返回整个数组,并按照它们最初在 nums 中出现的顺序排列,并且输出数组的大小
这题我们可以使用双指针的思路来解决:
用while循环遍历,如果nums[src]!=nums[dst],nums[1](也就是nums[++dst])就等于nums[src],然后dst和src依次++,如果nums[src]=nums[dst]的话,src就直接++,dst不用++
在这里插入图片描述
代码实现如下:

int removeDuplicates(int* num, int numsSize)
{
    int src = 1;
    int dst = 0;
    while (src < numsSize)
    {
        if (num[src] != num[dst])
        {
            num[++dst] = num[src++];
        }
        else
            src++;
    }
    return dst + 1;//返回数组的大小
}
3:合并两个有序数组

在这里插入图片描述
本题是将两个有序的数组最后合并为一个有序数组,然后返回,我们可以先将数组nums2放入nums1中,然后再将nums1进行一次排序,然后返回nums1
在这里插入图片描述
代码实现如下:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
//直接用qsort排序
    //int i = 0;
    //int pos = 0;
    //for (i = 0; i < n; i++)
    //{
    //    nums1[m + i] = nums2[pos++];
    //}
    //qsort(nums1, nums1Size, sizeof(int), cmp);
    //这种方法也比较简单,是将两个数组中末位的元素进行比较
    int end1 = m - 1;
    int end2 = n - 1;
    int i = m + n - 1;
    while (end1 >= 0 && end2 >= 0)
    {
        if (nums1[end1] >= nums2[end2])
        {
            nums1[i--] = nums1[end1--];
        }
        else
        {
            nums1[i--] = nums2[end2--];
        }
    }
    while (end2 >= 0)
    {
        nums1[i--] = nums2[end2--];
    }
}

4:旋转数组

在这里插入图片描述
这个题目算是很简单的,在我之前的文章中也讲解过,所以这里不做过多的解释了
代码如下:
大致的思路就是先将前k个元素旋转,然后旋转后一部分,然后再整体旋转

void swap(int* a, int* b)
{
    int t = *a;
    *a = *b, *b = t;
}

void reverse(int* nums, int start, int end) 
{
    while (start < end) 
    {
        swap(&nums[start], &nums[end]);
        start += 1;
        end -= 1;
    }
}

void rotate(int* nums, int numsSize, int k) 
{
    k %= numsSize;
    if( k ==0 || numsSize == 1)
    {
        return;
    }
    
    //交换高到低
    reverse(nums, 0, k - 1);

    //交换低到高
    reverse(nums, k, numsSize - 1);

     //交换全部
    reverse(nums, 0, numsSize - 1);
}
5:数组形式的整数加法

在这里插入图片描述
本题的思路如下:
我们的函数参数有num数组,就是我们输入的数组,numsize是num数组的元素个数,k是加上去的值,returnsize是最后加上k后的数组
思考后我们就可以得出以下思路:
在这里插入图片描述

代码如下:

int* addToArrayForm(int* num, int numSize, int k, int* returnSize)
{
    int i=0;
    int sum=0;
    int x=pow(10,numSize-1);
    for(i=0;i<numSize;i++)
    {
        sum+=num[i]*x;
        x=x/10;
    }
    int SUM=sum+k;
    int count=0;
    while(SUM)
    {
        count++;
        SUM/=10;
    }
    int y=pow(10,count-1);
    for(i=0;i<count;i++)
    {
        returnSize[i]=(sum+k)/y;
        y/=10;
    }
    return returnSize;
}

好了,今天的分享到这里就结束了,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/157778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

处理机器学习数据集中字符串列(pandas.get_dummies)

如图&#xff0c;在数据集中week列的数据不是数值型&#xff0c;会导致我们在训练过程中难以处理。 而pandas库中有一个非常好用的函数&#xff0c;独热编码pandas.get_dummies(df) 使用此函数之后&#xff0c;会在原数据中新建各列代表Fri-Sun&#xff0c;值为0或1&#xff…

vscode调试pytorch的DistributedDataParallel代码

这里写自定义目录标题 一、查找launch.py二、修改launch.json三、特别提醒3.1 错误的写法3.2 正确的写法 一、查找launch.py 使用代码。 find / -name launch.py | grep distributed得到的结果如下 这里我们得到了两个结果&#xff0c;看目标文件的路径名&#xff0c;第二个…

系统韧性研究(5)| 常用的系统韧性技术

如果不利事件或条件导致系统无法正常运行&#xff0c;则它们可能会对有价值的资产造成各种形式的损害。正如我在本系列的前几篇文章中概述的那样&#xff0c;系统韧性很重要&#xff0c;因为没有人想要一个无法克服“不可避免的逆境”的脆弱系统。 在本系列的第一篇文章中&…

怎么为pdf加水印?

怎么为pdf加水印&#xff1f;最近很多小伙伴都有这样的疑问。你可以在浏览器上搜索一下&#xff0c;关于这方面的很多还是有很多人不是很清楚的。虽然我们自己在很多PDF文件上都看到了水印&#xff0c;那么真的到了自己这边需要进行操作的时候&#xff0c;确实还是有些这样或是…

PHPStorm PHP-CS-Fixer

我用的是brew安装&#xff1a; brew install php-cs-fixer phpstorm配置&#xff1a; setting搜索fixer 指定安装php-cs-fixer的目录&#xff1a; https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/installation.rst 图文详解PHPStorm实现自动执行代码格式化-…

如何利用TSINGSEE青犀智能分析网关算法从人员、设备、行为三大角度进行监狱智能化升级改造

监狱作为关押犯人的重要场所&#xff0c;十分需要全天候全方位无死角的监控&#xff0c;但由于狱警人力有限&#xff0c;无法达到目前的监控需求。并且在监狱中&#xff0c;犯人众多也极易发生口角冲突&#xff0c;如若没有及时处理&#xff0c;就会发生难以挽回的意外。如何更…

AnimateDiff搭配Stable diffution制作AI视频

话不多说&#xff0c;先看视频 1. AnimateDiff的技术原理 AnimateDiff可以搭配扩散模型算法&#xff08;Stable Diffusion&#xff09;来生成高质量的动态视频&#xff0c;其中动态模型&#xff08;Motion Models&#xff09;用来实时跟踪人物的动作以及画面的改变。我们使用 …

【大话Presto 】- 核心概念

文章目录 前言Operator Model And Iterator Model系统组成Connector数据模型查询执行模型StatementStageTaskSplitDriverOperatorExchangePipeLine 总结 前言 Presto&#xff08;PrestoDB&#xff09;是一个FaceBook开源的分布式MPP SQL引擎&#xff0c;旨在处理大规模数据的查…

【硬核】把一个MOS管制作成开关电路

你要是想读懂这篇文章&#xff0c;请先去了解MOS管的基础知识&#xff0c;本文是在基础之上做出的一部分扩展&#xff0c;可能有一点点深&#xff0c;请各位同学注意。 本文带你了解MOS管的开通/关断原理&#xff0c;使用PMOS做上管、NMOS做下管都是比较方便&#xff0c;使用PM…

「分享学习」SpringCloudAlibaba高并发仿斗鱼直播平台实战完结

[分享学习]SpringCloudAlibaba高并发仿斗鱼直播平台实战完结 第一段&#xff1a;简介 Spring Cloud Alibaba是基于Spring Cloud和阿里巴巴开源技术的微效劳框架&#xff0c;普遍应用于大范围高并发的互联网应用系统。本文将引见如何运用Spring Cloud Alibaba构建一个高并发的仿…

设计模式之桥接模式--连接抽象与实现(你想知道的问题都有)

目录 概述结构型设计模式桥接模式的定义桥接模式的角色和关系 版本迭代紧耦合版增加品牌两个品牌两款软件松耦合的设计版本迭代业务分析总结 问题升华抽象与实现抽象包含的一些方法或属性依赖于实现部分的接口关联关系与桥接模式桥接模式适合情况谁是实现&#xff0c;谁是抽象组…

希亦ACE和小吉内衣洗衣机选哪个?两款洗衣机对比

内衣洗衣机可以称得上是实现幸福的小家电&#xff0c;它不仅懒人的福音还是我们打工人的福音&#xff0c;在每天下班之后可以有时间休息了&#xff0c;洗完澡还有要手洗内衣裤&#xff0c;真的很痛苦&#xff0c;拥有了内衣洗衣机简直是一件非常幸福的事情&#xff0c;但现在市…

源码安装prometheus(普罗米修斯监控)

IP角色系统规格192.168.0.38Prometheus 服务端CentOS 74c8g192.168.0.25node_exporter 客户端CentOS 74c8g 普罗米修斯下载网址: Download | Prometheus 1.下载prometheus [rootprometheus opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.47.2…

可以免费使用的设计素材网站分享

UI设计师最怕什么&#xff1f; 没有创意&#xff0c;没有灵感&#xff0c;没有思路&#xff01; 在哪里可以得到idea&#xff1f;别担心&#xff0c;往下看&#xff01; 你知道网络有多大&#xff0c;你想要什么吗&#xff1f;今天&#xff0c;我想和大家分享一些宝藏网页设…

榜首揭秘:热门产品原型设计工具TOP10

在现代产品制作和创新过程中&#xff0c;原型设计工具起着不可或缺的作用。这些工具为设计师、开发人员和团队提供了更深入的理解&#xff0c;以便核实和呈现他们的设计想法。根据项目的特性&#xff0c;可能需要使用各种类型的工具&#xff0c;因此&#xff0c;我们将在此篇文…

赛宁网安分靶场全力支持第三届“鹏城杯”攻防演练

为加速推进我国网络安全战略与数字化进程接轨&#xff0c;创新信息系统安全防护与网络安全技术研究模式&#xff0c;促进各行业网络安全建设的融合与协作&#xff0c;由鹏城实验室和中国网络空间安全人才教育论坛联合牵头举办的第三届“鹏城杯”联邦网络靶场协同攻防演练正式启…

MFA多因子认证

什么是多因子认证&#xff08;MFA&#xff09;&#xff1f;为什么需要MFA&#xff1f; 同义词 多因子认证或者多因素验证 [尤其是需要做等级保护测评的时候需要用到] 摘要 多因子认证MFA&#xff08;Multi Factor Authentication&#xff09;是一种安全认证过程&#xff0c;需…

使用宝塔面板安装mysql

1.第一步 在官网https://www.bt.cn/new/download.html下载页面直接在服务器控制面板复制这里的代码下载即可 2.第二步 下载好后按照服务器面版上有个公网地址&#xff0c;含有用户名和密码&#xff0c;保存好&#xff0c;然后通过公网地址打开一个网页&#xff0c;绑定自己注册…

恐怖地牢资产来袭!

我们将为您带来 VoxEdit 短片大赛的首场比赛&#xff01;在 6 天内创建可用资产。 主题&#xff1a;设计与恐怖和地牢相关的资产。这些资产必须非常实用&#xff0c;不需要动画。(如果你愿意&#xff0c;你也可以制作动画&#xff09;。 发挥你恐怖的一面&#xff0c;创造出适…

Hadoop学习总结(MapRdeuce的词频统计)

MapRdeuce编程示例——词频统计 一、MapRdeuce的词频统计的过程 二、编程过程 1、Mapper 组件 WordcountMapper.java package com.itcast.mrdemo;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; …