当前位置: 首页 > news >正文

网站推广seo代理长春广告设计公司

网站推广seo代理,长春广告设计公司,如何导入旧网站数据库,深圳网站建设便宜信科网络刷爆LeetCode系列LeetCode27题:github地址前言题目描述题目思路分析代码实现算法代码优化LeetCode27题: github地址 有梦想的电信狗 前言 本文用C实现LeetCode 第27题 题目描述 题目链接:https://leetcode.cn/problems/remove-element/ …

刷爆LeetCode系列

  • LeetCode27题:
  • github地址
  • 前言
  • 题目描述
  • 题目思路分析
  • 代码实现
  • 算法代码优化

LeetCode27题:

github地址

有梦想的电信狗

前言

本文用C++实现LeetCode 第27题


题目描述

题目链接:https://leetcode.cn/problems/remove-element/

在这里插入图片描述


在这里插入图片描述

题目思路分析

目标分析

  1. 将数组中等于val的元素移除
  2. 原地移除,意味着时间复杂度为O(n),空间复杂度为O(1)
  3. 返回nums中与val值不同的元素个数

思路:双指针

  • src:用于扫描元素,从待扫描元素的第一个开始,因此初始下标为0

  • dst:指向数组中,最后一个位置正确的元素的下标,因此初始值为-1

  • count:记录赋值的次数,赋值的次数即为数组中与val值不同的元素个数,初始值为0

操作

  • nums[src] != val 时,说明:src位置的数无需被去掉,将其放在dst的下一个位置
    • dst先++,指向可以放入下一个无需被删除的元素的位置
    • nums[dst]赋值放入元素,之后src++
    • 计数器count++
  • nums[src] == val 时,说明src位置的数需要被去掉,src++略过该元素。

在这里插入图片描述

代码实现

  • 时间复杂度O(n)
  • 空间复杂度O(1)
class Solution {
public:int removeElement(vector<int>& nums, int val) {int src = 0, dst = -1;int count = 0;while(src < nums.size()){if(nums[src] != val){++dst;nums[dst] = nums[src];src++;++count;}else{++src;}}return count;}
};

算法代码优化

  • 时间复杂度O(n)
  • 空间复杂度O(1)

通过观察我们发现

  • dstcount自增的次数一样,且初值分别为0和-1,因此count == dst + 1
  • while循环内,if和else逻辑中,都执行了src++,因此ifelse中的src++可以省略,直接将src在循环中++
 // 优化版
int removeElement(vector<int>& nums, int val) {int src = 0, dst = -1;while(src < nums.size()){if(nums[src] != val){++dst;nums[dst] = nums[src];}++src;}return dst + 1;
}
  • 利用前置和后置++的特性最终优化,但不推荐这么写,因为算法的可读性下降了
class Solution {
public:int removeElement(vector<int>& nums, int val) {int src = 0, dst = -1;while(src < nums.size()){if(nums[src] != val)nums[++dst] = nums[src++];else++src;}return dst + 1;}
};

以上就是本文的所有内容了,如果觉得文章对你有帮助,欢迎 点赞⭐收藏 支持!如有疑问或建议,请在评论区留言交流,我们一起进步

分享到此结束啦
一键三连,好运连连!

你的每一次互动,都是对作者最大的鼓励!


征程尚未结束,让我们在广阔的世界里继续前行! 🚀

http://www.dtcms.com/a/400310.html

相关文章:

  • wordpress建站后怎样发布手绘动画制作软件
  • ppt模板做的好的网站有哪些品牌建设ppt
  • 行业电子网站建设长葛做网站
  • 2025版基于springboot的家政服务预约系统
  • agent概述
  • 万网虚拟主机上传网站php网站怎么做集群
  • 深圳网站优化包年wordpress footer.php
  • 网站备案安全承诺书公司名称大全及最新
  • 厦门网站建设方案咨询大连企业网站建设定制
  • Android Studio 详细安装与配置指南
  • 陶瓷类网站建设个人网站设计论文一万字
  • 带数据库的网站模板下载做网站网页的成本
  • 免费网站排名优化在线域名设计与分析
  • 漂亮公司网站源码打包下载大型户外广告设计公司
  • 网站建设 分类wordpress默认index
  • 免费建微网站平台网站换程序 搜索引擎
  • 门户网站建设滞后怎样做网站内链
  • 数字化转型:概念性名词浅谈(第五十讲)
  • Fiber、协程和 Generator行为上的区别?
  • 朝阳区建设工作办公室网站wordpress json
  • 乐山网站开发公司电话用自己的电脑做网站服务器
  • 屏山县建设局网站网站开发能赚钱吗
  • 昌平网站开发自己做网站需要什么条件
  • 昆明网站排名比百度还强大的搜索引擎
  • niche网站建设机械加工网配件销售网
  • 嘉兴做网站费用电话销售电销系统
  • 网站深度功能全网热度指数
  • 变电站智能激光语音综合驱鸟器的适用场景有哪些?
  • codex + windows 环境下使用 serena mcp
  • 测试方案缺少测试设计的推导过程-如何补充