数据结构与算法——顺序表期末复习五大经典题型

news2024/11/15 12:18:45

目录

 一:顺序表-移除元素

二:顺序表-删除有序数组中的重复项

三:顺序表-合并两个有序数组

四:顺序表-旋转数组

五:顺序表-数组形式的整数加法


 一:顺序表-移除元素

题型链接:27. 移除元素 - 力扣(LeetCode)

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

以 【 nums = [0,1,2,2,3,0,4,2], val = 2 】为例:

 

解答步骤: 

int removeElement(int* nums, int numsSize, int val) {
    int i=0,j=0;
    for(i=0,j=0;j<numsSize;)
    {
        if(nums[j]==val)
        {
            j++;
        }   
        else
        {
            nums[i++] = nums[j++];
        }
    }
    return i;
}

二:顺序表-删除有序数组中的重复项

题型链接:26. 删除有序数组中的重复项 - 力扣(LeetCode)

题目要求:删除排序数组中的重复项

以【 nums = [0,0,1,1,1,2,2,3,3,4]  】为例:

解答步骤:

int removeDuplicates(int* nums, int numsSize) {
    int i=0,j=0;
    for(i=0,j=0;j<numsSize;)
    {
        if(nums[i]==nums[j])
        {
            j++;
        }
        else
        {
            nums[++i] = nums[j++];
        }
    }
    return i+1;
}

三:顺序表-合并两个有序数组

题型链接:88. 合并两个有序数组 - 力扣(LeetCode)

题目要求:合并两个有序数组

解题思路:从后往前大小比较法

以【 nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 】为例:

解答步骤:

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--] = nums2[end2--];
        }
        else
        {
            nums1[end--] = nums1[end1--];
        }
    }
    while(end2>=0)
    {
        nums1[end--] = nums2[end2--];
    }
}

四:顺序表-旋转数组

题型链接:189. 轮转数组 - 力扣(LeetCode)

题目要求:将数组旋转

解题思路:三段逆置法

向右轮转k个位置:

  1. 先将整个数组进行逆置。
  2. 再将【0,k-1】范围内的数组逆置
  3. 最后【k,numsSize-1】范围内的数组逆置

解答步骤:

//逆序
void Reverse(int* a,int left,int right)
{
    while(left<right)
    {
        int tmp = a[left];
        a[left]= a[right];
        a[right] = tmp;

        ++left;
        --right;
    }

}

void rotate(int* nums, int numsSize, int k) {
    k %= numsSize;
    Reverse(nums,0,numsSize-1);
    Reverse(nums,0,k-1);
    Reverse(nums,k,numsSize-1);
}

五:顺序表-数组形式的整数加法

题型链接:989. 数组形式的整数加法 - 力扣(LeetCode)

题目要求:数组形式的整数加法

解题思路:

  1. 先得到的所求的逆序数组
  2. 再将其逆置转换过来

 

解答步骤:

int* addToArrayForm(int* num, int numSize, int k, int* returnSize) {

    int* tmp = (int*)malloc(sizeof(int) * fmax(10, numSize + 1));
    *returnSize = 0;

    for(int i = numSize-1; i>=0; i--)
    {
        int sum = num[i] + k % 10;
        k /= 10;
        if(sum>=10)
        {
            k++;
            sum -= 10;
        }
        tmp[(*returnSize)++] = sum;
    }

    for(; k>0; k/=10)
    {
        tmp[(*returnSize)++] = k%10;
    }

    for(int i=0; i<(*returnSize)/2; i++)
    {
        int ret = tmp[i];
        tmp[i] = tmp[(*returnSize)-1-i];
        tmp[(*returnSize)-1-i] = ret;
    }

    return tmp;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【期末复习】大二下系列 公共课专业课 复习笔记合集

计算机网络 老师划重点 第一章 计算机网络概述 1.3 互联网概述&#xff08;概念&#xff0c;因特网四个阶段&#xff09; 因特网四个阶段&#xff1a; 因特网草案建议标准草案标准因特网标准 1.5 计算机网络的主要性能指标 1.6 计算机网络体系结构&#xff08;三种划分和各…

黑神话悟空mac可以玩吗

黑神话悟空mac上能不能玩对于苹果玩家来说很重要&#xff0c;那么黑神话悟空mac可以玩吗&#xff1f;目前是玩不了了&#xff0c;没有针对ios系统的版本&#xff0c;只能之后在云平台上找找了&#xff0c;大家可以再观望下看看。 黑神话悟空mac可以玩吗 ‌使用CrossOver‌&…

cdr怎么画虚线?

虚线是以点或者短线画成的断续的线&#xff0c;多用于几何图形或者标记。我们在平常学习工作中经常使用标记的方式。根据国标制图规定 机械制图 图样画法 图线规定&#xff0c;技术图样中&#xff0c;主要使用细虚线和粗虚线两种&#xff0c;细虚线用以表示不可见棱边线和不可见…

Feed流系统重构:架构篇

重构对我而言&#xff0c;最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构&#xff0c;那时系统常因超时引发用户投诉。接手任务时&#xff0c;我既激动又紧张&#xff0c;连续两天几乎废寝忘食地编码。结果令人振奋&#xff0c;算奖时间从一小时大幅缩短至十分钟。…

半导体行业跨国文件传输解决方案

在数字化浪潮席卷全球的今天&#xff0c;半导体行业无疑是科技创新的先锋。随着对数据传输需求的激增&#xff0c;传统的文件传输协议FTP在处理半导体行业庞大的文件量和复杂的文件结构时显得捉襟见肘。尤其是在跨国文件传输场景中&#xff0c;传统方法已经难以跟上行业的发展步…

你了解什么是场外期权吗?

今天期权懂带你了解你了解什么是场外期权吗&#xff1f;场外期权是指在交易所之外进行交易的期权合约。这类期权通常是由买卖双方通过私人协议进行交易&#xff0c;而不是在标准化的交易所上进行。 场外期权的特点 1.定制化&#xff1a;场外期权合约可以根据交易双方的具体需…

AI写作神器:助力体制内小白轻松完成材料撰写,减少慌张茫然

刚刚进入体制内的工作者&#xff0c;对于公文材料撰写基本无从下手&#xff0c;力不从心&#xff0c;提交稿件后&#xff0c;反馈的问题大多存在结构格式不对、文字口语化&#xff0c;缺少理论依据等&#xff0c;笔者是做互联网的&#xff0c;所以对AI工具比较了解&#xff0c;…

FPGA在AI时代的应用与挑战:《详解FPGA:人工智能时代的驱动引擎》(可下载)

在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;和大数据已经成为了推动技术进步和产业革新的核心力量。在这一浪潮中&#xff0c;FPGA作为一种极具灵活性和强大计算能力的半导体器件&#xff0c;正扮演着越来越重要的角色。 本片文章将为你带来书籍…

战神诸神黄昏9月19日登录PC端! 手机怎么玩战神诸神黄昏

9月19日&#xff0c;《战神&#xff1a;诸神黄昏》正式登录PC端&#xff0c;这是一部动作冒险游戏。要是你想随时随地在手机或平板上也能玩《战神&#xff1a;诸神黄昏》&#xff0c;可以使用网易GameViewer远程帮你实现。 网易GameViewer远程作为一款专为游戏玩家打造的远程软…

智能硬件从零开始的设计生产流程

文章目录 市场分析团队组建ID设计结构设计pcba设计软件开发手板EVT开模DVTPVTMP 智能硬件研发是一个复杂的过程, 当然一件事要发出萌芽必须得有人, 有一天,几个合伙人凑在一起,说一起开发个智能硬件产品吧,于是故事开始了. 市场分析 合伙人: 万物互联的时代, 智能音箱已经成为…

【LeetCode每日一题】2024年9月第二周(下)

2024.9.13 困难 难度评分1917 链接&#xff1a;2398. 预算内的最多机器人数目 &#xff08;1&#xff09;题目描述&#xff1a; &#xff08;2&#xff09;示例 &#xff08;3&#xff09;分析 翻译一下题目&#xff1a;要求我们在给定的 chargeTimes 和 runningCosts 数组以…

ELFK日志分析平台,架构和通信

整个架构&#xff0c;加上跳板机&#xff0c;总共12台机器 技术方案&#xff1a; 1. 配置nfs服务器&#xff0c;为web集群提供共享网络文件系统 # 部署 NFS 服务 [rootnfs ~]# dnf install -y nfs-utils [rootnfs ~]# vim /etc/exports /var/webroot 192.168.1.0/24(rw,…

当代世界最著名的哲学家颜廷利:21世纪全球华人最前沿的思想家教育家

在人类的视觉体验中&#xff0c;仅有两种现象深刻影响着我们的视力&#xff1a;近视与老花。前者多在青少年时期悄然降临&#xff0c;而后者则常伴随中年之后的生活。有趣的是&#xff0c;当我们以创意的眼光观察英文字母时&#xff0c;bd组合呈现出的向下眼镜提醒我们&#xf…

Red Hat 和 Debian Linux 对比

原图的作者(https://bbs.deepin.org/post/209759) Red Hat Enterprise Linux https://www.redhat.com/ CentOS Linux https://www.centos.org/ Fedora Linux https://fedoraproject.org/ Debian https://www.debian.org/ Ubuntu https://cn.ubuntu.com/ https://ubuntu.c…

【C++ | tips】const Date* operator() const中这两个const有什么区别?他们的作用是什么?

const Date* operator&() const { return this; } 我们要明白operator&()这个函数是做什么的。 在C中&#xff0c;&操作符通常用于获取一个对象的地址。但是&#xff0c;有时候我们想要自定义这个行为&#xff0c;比如说&#xff0c;我们想要控制别人怎么获取…

【linux-Day3】linux的基本指令<中>

【linux-Day3】linux的基本指令<中> linux下的基本指令&#x1f4e2;man&#xff1a;访问linux手册页&#x1f4e2;echo&#xff1a;把字符串写入指定文件中&#x1f4e2;cat&#xff1a;查看目标文件的内容&#x1f4e2;cp&#xff1a;复制文件或目录&#x1f4e2;mv&am…

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代&#xff0c;数据就是新的黄金。无论是企业还是个人&#xff0c;数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中&#xff0c;使用爬虫技术无疑是一种高效且广泛应用的方法。然而&#xff0c;爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…

详解RFM模型

详解RFM模型 一、定义二、RFM模型的三个指标1‌、最近一次消费&#xff08;Recency&#xff09;‌2、消费频率&#xff08;Frequency&#xff09;‌3、消费金额&#xff08;Monetary&#xff09;‌ 三、RFM模型的应用和分类1、精细化营销2、提升客户满意度3、风险管理4、产品优…

超详细超实用!!!零基础java开发之云风笔记更新数据接口开发(十)

云风网 云风笔记 云风知识库 一、service/NoteApi新增updateNode接口定义 public interface NoteApi {...int updateNote(NoteManage noteManage); }二、service/impl/NoteServiceImpl接口实现逻辑 public class NoteServiceImpl implements NoteApi {AutowiredNoteMapper n…

5、SAP定义科目组和字段控制

定义解释 用于创建科目组&#xff0c;并进行输入控制&#xff0c;即在输入科目时&#xff0c;哪些自动允许输入&#xff0c;哪些自动隐藏等。科目组是将性质类似的科目分类&#xff0c;组要维护前台会计科目主数据。(统驭科目–字段状态组–凭证输入)。 后台配置 路径&#…