leetcode27:移除元素(暴力+双指针)
一:题目
二:暴力+双指针
1:暴力解法
(1):思路
1.在数组当中 我们想要删除一个元素 得靠覆盖也就是后面的元素往前覆盖其想要删除的元素
但是注意的是我们真实的数组中的元素个数是不变的 因为我们只是将后面的元素移到起前面
并未真正的删除。
2.两层for循环,第一层for循环找到和val相等的元素,并确定其下标,然后更新数组
(2):上码
class Solution {public:/**思路:1.在数组当中 我们想要删除一个元素 得靠覆盖也就是后面的元素往前覆盖其想要删除的元素但是注意的是我们真实的数组中的元素个数是不变的 因为我们只是将后面的元素移到起前面并未真正的删除。 2.两层for循环,第一层for循环找到和val相等的元素,并确定其下标,然后更新数组*/int removeElement(vector<int>& nums, int val) {int length = nums.size();for(int i = 0; i < length; i++){if(val == nums[i]){for(int j = i; j < length-1; j++){nums[j] = nums[j+1];}length--;//数组中元素少一个所以长度减一i--;///**移除元素 31 2 3 4 5 6 7移完之后的数组1 2 4 5 6 7此时需要i--因为 此时i = 2 那么再经过i++的话i=3 那么访问的元素是5 则把元素4给错过了所以我们需要i--,这样就可以访问到元素4*/}}return length;}
};
2:双指针
(1):思路
1.使用快慢指针 这里的所表示的快指针指的是无论是否找到val 其都正常往后移动 但是慢指针就不是这样了
遇到val 它就不更新了
(2):上码
class Solution {public:/**思路:1.使用快慢指针 这里的所表示的快指针指的是无论是否找到val 其都正常往后移动 但是慢指针就不是这样了遇到val 它就不更新了*/int removeElement(vector<int>& nums, int val) {int slowIndex = 0;for(int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {if(nums[fastIndex] != val){nums[slowIndex] = nums[fastIndex];slowIndex++;}}return slowIndex;}
};
leetcode27:移除元素(暴力+双指针)相关推荐
- LeetCode--27. 移除元素(双指针)
移除元素(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 双指针排序法 3.2 双指针乱序法 4. Python实现 1. 题目描述 难度:简单 2. 题目分析 该题和 ...
- 代码随想录Day01 | LeetCode704.二分查找、LeetCode27.移除元素
数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合. 数组可以方便的通过下标索引的方式获取到下标下对应的数据 需要两点注意的是 数组下标都是从0开始的. 数组内存空间的地址是连续的 正是因为 ...
- #力扣 LeetCode27. 移除元素 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC
题目描述: 27. 移除元素 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { //你需要 原地 移除所有数值等于 val 的元素,并 ...
- 数组|leetcode27.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...
- leetcode27 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- leetcode 27. 移除元素(双指针)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...
- Leetcode--27. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- Leetcode27.移除元素(c++,beats 100%,附详细解释~)
本题采用了双指针的思路: i 指针所指为每次判断与val值是否相同的位置,j 指针所指为判断结果后更新的位置: 整体思路: (1)将两个指针赋初值为0,for循环每次将i指针后移,直到i指针到最后一个 ...
- LeetCode-27 移除元素
题目描述: 思路想法: 如果能够领会数组中的模块思想这道题就可以秒杀了: 我们把数组中每一个坑位都当作是必须被重新填的坑位,这是一个模块: 我们把原数组当成手中的袋子的资源:对于第一个坑位来说,我们要 ...
最新文章
- Shall的变量功能
- wpf 图表控件_LightningChart为外汇衍生品交易商提供数据可视化图表支持
- html中颜色的编号,html中各种颜色的编号.doc
- 关于C++中vector和set使用sort方法进行排序
- Linq查询datatable的记录集合
- apache apr介绍
- 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
- ONNX系列一 --- 带有ONNX的便携式神经网络
- 《Essential C++》笔记之关联容器map的使用总结
- matlab2c使用c++实现matlab函数系列教程-factorial函数
- 下一代操作系统与软件
- Ubuntu安装rz sz
- 电气与计算机哪个好考吗,电气工程师难考吗 含金量怎么样
- mysql中如何复制数据表_MySQL中快速复制数据表方法汇总
- 计算机模拟技术在高分子领域的应用,模拟技术的原理、方法及在高分子材料研究中的应用...
- web安全:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧
- 《环太平洋》视觉特效分解
- ArrayList扩容机制源码分析
- Pycharm控制台中文输出乱码怎么办?控制台输出乱码问题的解决方法
- 从“薛定谔的猫”联想到“好奇害死猫”
热门文章
- 在.NET Core中使用MySQL5.7的JSON类型字段
- ReSharper 2020.2 补丁
- Android之运行app提示The application could not be installed: INSTALL_FAILED_TEST_ONLY
- linux之使用md5sum命令比较两个文件是否一样
- sql order by,desc和limit使用(mysql)
- batchsize和数据量设置比例_Keras - GPU ID 和显存占用设定步骤
- jdk源码分析书籍 pdf_什么?Spring5 AOP 默认使用Cglib?从现象到源码深度分析
- c语言十佳运动员有奖评选系统_2019年沃德十佳内饰解读
- vue2 怎么用vite_vue3vite简介
- whitelabel error page什么意思_什么是RESTful API?总算能说清楚了