【鼠鼠优选算法-双指针】001:移动零 & 002:复写零

【鼠鼠优选算法-双指针】001:移动零 & 002:复写零

🎈主页传送门:良木生香

🔥个人专栏:《C语言》 《数据结构-初阶》 

🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离


在学习了这么多基础知识之后,我们就从今天开始操练一下我们的基本技能吧,先来两道简单的题目试试手:

1.移动零:题目链接~~~

2.复写零:复写零

那我们就一题一题来讲讲吧~~~

一、移动零

题目描述:

看到题目,这道题是想让我们将一个数组中的所有0移动到数组的末尾.

题目意思明了,但是我们该怎么操作呢?

在这道题中我们第一个想到的就是重新创建新的数组,将数值不为0的元素移动到新的数组中,但是题目明确要求说了,只能再原地进操作,我们该怎么实现这个操作呢?又不能创建新的数组不急,我有妙招.

原理解析:

在这道题目中,我们可以用两个指针,current和dentist,一个用来遍历整个数组,另一个用来处理当下的数据

当cur遍历到值为0的元素时,就与dest交换,随后两者同时向后移动一步

但是不管cur碰到的元素是否等于0,都会向后移动一步

 

代码实现:

下面是用C语言实现的代码:

void Swap(int*a,int*b){ int temp = 0; temp = *a; *a = *b; *b = temp; } void moveZeroes(int* nums, int numsSize) { int current = 0; int dentist = 0; while(current<=numsSize-1){ if(nums[current]!=0){ Swap(nums+dentist,nums+current); dentist++; } current++; } }

我们将这段代码提交到力扣平台上,看看运行结果:

显然,通过了,那么以上就是这道题的题解了~~~

 

 

 

二、复写零

题目描述:

这道题目的意思是想让我们在对于数组中的0元素复写一遍,也就是把0再写一遍,而且不用管数组后面的元素,可以被覆盖掉.我们可以通过下面的思路进行解题:

原理解析:

在这道题中,我们首先想到的方法就是从前向后把元素都遍历一遍,在碰到0的时候就再往后移动一次写一个0,但是这样我们会发现,在复写的过程中,会把0元素后面的非零元素给覆盖掉,很显然,从前往后这种方法是行不通的,那我们不妨试试从后往前呢.

想要实现从后往前复写,我们就要找出在原数组中会被复写到的最好一个元素,这样才知道我们要性哪里开始复写.这样的话我们的思路就明了了:

1.先找出最后被复写到的元素

2.判断倒数第二个元素是不是0元素,如果是,那就直接将最后两个元素置为0

3.从后向前实现复写操作

详细代码如下:

void duplicateZeros(int* arr, int arrSize) { //第一步:先找出最后一个元素: int cur=0; int dest=-1; while(cur<arrSize){ if(arr[cur]){ dest++; } else{ dest+=2; } if(dest>=arrSize-1) break; cur++; } //现在另外判断边界情况,也就是说,只有倒数第二个是0的这种情况 if(dest==arrSize){ arr[arrSize-1] = 0; cur--; dest-=2; }

现在我们将代码提交到平台上看看结果:

显然是通过的,那么这就是这道题的所有题解啦~~~~~

 

 

文章是自己写的哈,有什么描述不对的、不恰当的地方,恳请大佬指正,看到后会第一时间修改,感谢您的阅读~

Read more

Python快速落地的临床知识问答与检索项目(2025年9月教学配置部分)

Python快速落地的临床知识问答与检索项目(2025年9月教学配置部分)

项目概述与技术选型 本项目定位为临床辅助决策支持工具,而非替代临床诊断的独立系统,旨在解决医疗行业两大核心痛点:一是医学知识更新速率加快,2025 年临床指南年均更新量较 2020 年增长 47%,传统知识管理方式难以同步;二是科室规范呈现碎片化分布,不同院区、亚专科的诊疗流程存在差异,导致知识检索效率低下。技术路线采用 RAG 知识库 + ChatFlow 多轮对话 + 工具节点对接 的三层架构,通过整合指南文献、临床路径和院内 SOP 文档,满足门诊快速问诊、病房随访问答及科室知识库精准检索需求,最终实现医疗信息可及性提升 30%、基层医生决策效率提高 25% 的核心价值目标[1]。 技术栈选型分析 1. 大语言模型:领域专精与多模态融合 临床知识问答核心模型需兼顾专业性与部署灵活性。2025 年主流选型包括: * Chimed - GPT:基于 Ziya - V2 架构,通过预训练、

By Ne0inhk

【2025最新】Python量化数据接口指南:baostock 免费获取分钟级K线教程

baostock 是一个对Python量化爱好者非常友好的免费开源证券数据平台,尤其适合获取A股历史行情数据。我为你准备了这份2025年更新的baostock使用指南,希望能帮助你高效地获取数据。 1. 认识baostock Baostock(证券宝)是一个免费、开源的证券数据平台。它通过Python API提供大量准确、完整的证券历史行情数据、上市公司财务数据等,能满足量化交易投资者、数量金融爱好者、计量经济从业者的数据需求。 它的数据返回格式为pandas DataFrame类型,这对于使用pandas/NumPy/Matplotlib进行数据分析和可视化非常友好。 2. 数据范围与时间 baostock的数据覆盖范围主要包括: 数据类型 包含内容 时间范围 备注                 股票数据 日、周、月K线数据 1990-12-19至今 5、15、30、60分钟K线数据 1999-07-26至今 指数数据 综合指数,规模指数,一级行业指数,二级行业指数,策略指数,成长指数,价值指数,主题指数,基金指数,

By Ne0inhk
Linux C/C++ 学习日记(61):Redis(二):多种数据结构的操作指令

Linux C/C++ 学习日记(61):Redis(二):多种数据结构的操作指令

注:该文用于个人学习记录和知识交流,如有不足,欢迎指点。 一、redis是kv数据库 key:string value:5 大基础核心结构String(字符串)Hash(哈希)List(列表)Set(集合)Sorted Set/ZSet(有序集合)。 【 另外还有 位图(Bitmap)、地理空间(Geo) 等常用扩展结构(基于基础结构实现)】 二、string 1. 结构说明 Redis 最基础、最常用的数据结构,值可以是字符串、数字(整数 / 浮点数)、二进制数据(如图片、序列化对象),单个 String 最大支持 512MB。 特点: 字符数组,该字符串是动态字符串

By Ne0inhk
【C++】类型转换

【C++】类型转换

目录 * C语言中的类型转换 * C++强制类型转换 * static_cast * reinterpret_cast * const_cast * dynamic_cast * RTTI C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。 (1)隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败。 (2)显式类型转化:需要用户自己处理。 classA{public:A()=default;};classB{ A _a;public:B(const A& a):_a(a){}};intmain(){int a =1;double b

By Ne0inhk