C/C++:优选算法

一、双指针

1.1移动零

链接:283. 移动零 - 力扣(LeetCode) 

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0] 

解法:

通过两个指针(并非是真的指针,只是数组的下标),dest和cur将长度为n的数组划分为三个部分;

[0,dest]:cur已经遍历过的地方,处理过不为0的部分;

[dest+1,cur-1]:cur已经遍历过的地方,处理过为0的部分;

[cur,n-1]:cur未遍历的地方;


第一种情况: cur指向数组元素为0

[0,dest]部分是处理过并且元素不为0的部分,cur指向0,所以处理后[0,dest]不变;

[dest+1,cur-1]部分是处理过为0的部分,所以处理后[dest+1,cur-1]长度加一;

[cur,n-1]部分长度减一;

 第二种情况: cur指向数组元素不为0

[0,dest]部分是处理过并且元素不为0的部分,cur指向1,所以处理后[0,dest]长度加一,dest往后移一位,用来存放1;

[dest+1,cur-1]部分是处理过为0的部分,所以处理后[dest+1,cur-1]长度不变;

[cur,n-1]部分长度减一;

 dest往后移一位,dest指向为0的部分,只需要将此时的dest指向和cur指向元素交换即可,之后cur++;


初始状态,dest=-1,cur=0;

1.nums[cur]为0,cur++;

2.nums[cur] 不为0,dest++后,在交换nums[dest]和nums[cur];

c++解法: 

class Solution {
public:void moveZeroes(vector<int>& nums) {for(int dest=-1,cur=0; cur<nums.size(); cur++){if(nums[cur])swap(nums[cur], nums[++dest]);}}
};

c语言解法: 

void moveZeroes(int* nums, int numsSize) 
{for(int dest=-1,cur=0; cur<numsSize; cur++){if(nums[cur]){       int temp = 0;temp = nums[++dest];nums[dest] = nums[cur];nums[cur] = temp;}}
}


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

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

相关文章

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么&#xff1a; 1.可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c; 按顺序地串行化执行而不会被其他命令插入&#xff0c;不许加塞2.一个队列中&#xff0c;一次性、…

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver&#xff0c;突然要用PLSQL Developer&#xff0c;确实很生疏。 –>> 我的场景&#xff0c;将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天&#xff0c;看网上说的可以用&#xff1a;Tools → ODBC Importer &…

WPF 手撸插件 八 依赖注入

本文内容大量参考了&#xff1a;https://www.cnblogs.com/Chary/p/11351457.html 而且这篇文章总结的非常好。 1、注意想使用Autofac&#xff0c;Autofac是一个轻量级、‌高性能的依赖注入&#xff08;‌DI&#xff09;‌框架&#xff0c;‌主要用于.NET应用程序的组件解耦和…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍&#xff0c;但在数据处理领域&#xff0c;SQL的某些功能和潜力仍然被许多人低估。接下来&#xff0c;小编将与您一起&#xff0c;探讨SQL的一些被忽视的特性&#xff0c;揭示它在数据管理中的真正实力。 1.…

红海云 × 滨湖国控集团 | 数智引领集团型国企人力资源数字化变革

合肥滨湖国有资本运营控股集团有限公司&#xff08;以下简称“滨湖国控集团”&#xff09;为合肥市包河区区属一级国企。滨湖国控集团作为安徽省市辖行政区中首个获得AA主体信用评级的区属国企&#xff0c;紧扣“三区”定位&#xff0c;聚焦“三位”追求 &#xff0c;积极构筑金…

Python OpenCV精讲系列 - 高级图像处理技术(五)

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;Python OpenCV精讲⚡️⚡️&#x1f496;&#x1f496; 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计&#xff0c;从基础概念入手&#xff0c;逐步深入到图像处理、特征检测、物体识…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者&#xff1a;来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中&#xff0c;Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 &#xff08;1&#xff09;方式1 &#xff08;2&#xff09;方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

解锁阿尔茨海默病(AD)靶点密码,开启靶向治疗新篇章

前 言&#xff1a; 阿尔茨海默病&#xff08;AD&#xff09;是一种严重的神经退行性疾病&#xff0c;多发于高龄人群&#xff0c;主要表现为记忆、思维、分析判断、视空间辨认、情绪等障碍。从实验室到临床应用的过程充满挑战。阿尔茨海默症新型疗法的开发主要聚焦于靶向Aβ、…

Vue3.0项目实战(三)——大事件管理系统首页 layout 架子与文章分类的实现

目录 1. 首页 layout 架子 [element-plus 菜单] 1.1 基本架子拆解 2. 登录访问拦截 2.1 需求 2.2 vue3 和 vue2 中的 Vue-Router 区别 3. 用户基本信息获取&渲染 4. 退出功能 [element-plus 确认框] 5. 文章分类页面 - [element-plus 表格] 5.1 基本架子 - PageCo…

专业版PyCharm使用plt.show()显示图像时,如何不显示在右侧工具栏中,而是直接弹出来

解决方案 File -> Settings -> Python Plots -> 取消勾选 Show plots in tool window 示例 默认勾选 Show plots in tool window 的显示效果&#xff1a; 取消勾选 Show plots in tool window 的显示效果&#xff1a;

伙房食堂电气安全新挑战:油烟潮湿环境下,如何筑起电气火灾“防火墙”?

近几年&#xff0c;随着我国经济的飞速发展&#xff0c;食堂餐饮也经历了一场变革&#xff0c;越来越多的电器走进了伙房食堂中&#xff0c;实现了电气化&#xff0c;为人们提供了高效便利的饮食服务&#xff0c;但同时也增加了火灾负荷。目前我国非常严重的电气火灾危害&#…

使用 Parallel 类进行多线程编码(下)

2.Parallel.ForEach() 的使用 从 ForEach() 这个名字可以看出该方法是用来遍历泛型集合的&#xff0c;新建一个 ASP.NET Core Web应用的项目&#xff0c;如下&#xff1a; 在 Index.cshtml.cs 文件中增加一个 UserInfo.cs 的类&#xff0c;代码如下&#xff1a; public class U…

组合逻辑电路的分析

目录 组合逻辑电路的分析 分析思路 基本步骤 例题1 例题2 组合逻辑电路的分析 分析思路 基本步骤 例题1 将每个门的输出命名。 写出逻辑函数式。 列真值表。 ABC全一致输出为1。 例题2 观察发现这三个结构是一样的。 逐级写出逻辑函数式&#xff1a; 发现这其实就是异或…

基于云端的跨平台个人信息管理系统

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

无线麦克风哪款好用,手机领夹麦克风哪个牌子好,麦克风推荐

随着短视频与直播行业的蓬勃发展&#xff0c;无线领夹麦克风市场迎来了前所未有的繁荣。品牌如罗德、大疆、西圣等麦克风品牌凭借卓越的技术实力与品牌影响力占据了市场的主导地位&#xff0c;其中西圣更是凭借其高性价比和用户口碑&#xff0c;稳居行业口碑品牌前列。但在这光…

Chainlit集成Langchain并使用通义千问实现文生图网页应用

前言 本文教程如何使用通义千问的大模型服务平台的接口&#xff0c;实现图片生成的网页应用&#xff0c;主要用到的技术服务有&#xff0c;chainlit 、 langchain、 flux。合利用了大模型的工具选择调用能力。实现聊天对话生成图片的网页应用。 阿里云 大模型服务平台百炼 API…

最新融合多模态的理解和生成的大一统transform架构,show-o模型部署

Show-o是由字节跳动和新加坡国立大学Show Lab共同研发的一个多模态大模型&#xff0c;统一了多模态理解和生成。 Show-o的创新之处在于它将自回归和离散扩散建模相结合&#xff0c;以适应不同和混合模态的输入和输出。 Show-o模型的架构基于预训练的大型语言模型&#xff08;…

web基础之SSRF

1、内网访问 题目提示&#xff1a;访问位于127.0.0.1的flag.php&#xff1b;直接利用ssrf漏洞访问?url127.0.0.1/flag.php 2、伪协议读取文件 &#xff08;1&#xff09;题目提示&#xff1a;尝试去读取一下Web目录下的flag.php吧 &#xff08;2&#xff09;什么是伪协议&a…

【鸿蒙】HarmonyOS NEXT星河入门到实战6-组件化开发-样式结构重用常见组件

目录 1、Swiper轮播组件 1.1 Swiper基本用法 1.2 Swiper的常见属性 1.3 Swiper的样式自定义 1.3.1 基本语法 1.3.2 案例小米有品 2、样式&结构重用 2.1 Extend:扩展组件(样式、事件) 2.2 Styles:抽取通用属性、事件 2.3 Builder:自定义构建函数(结构、样式、事…