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

郑州网站建设公司电话广告联盟看广告赚钱

郑州网站建设公司电话,广告联盟看广告赚钱,重庆市在建项目查询,北京知名广告公司有哪些一、力扣题目链接 27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 你不需要考虑数组中超出新长度后面的元素。 二、思路 要知道数组的元素在内存地址中是连续的,不…

一、力扣题目链接

27.移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
在这里插入图片描述

你不需要考虑数组中超出新长度后面的元素。

二、思路

要知道数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。

2.1暴力解法(对于数组,是覆盖,不是删除)

这个题目暴力的解法就是两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。

删除过程如下:
27.移除元素-暴力解法

很明显暴力解法的时间复杂度是O(n^2),这道题目暴力解法在leetcode上是可以过的。

代码如下:

// 时间复杂度:O(n^2)
// 空间复杂度:O(1)
class Solution {
public:int removeElement(vector<int>& nums, int val) {int size = nums.size();for (int i = 0; i < size; i++) {if (nums[i] == val) { // 发现需要移除的元素,就将数组集体向前移动一位for (int j = i + 1; j < size; j++) {nums[j - 1] = nums[j];}i--; // 因为下标i以后的数值都向前移动了一位,所以i也向前移动一位size--; // 此时数组的大小-1}}return size;}
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)

2.2双指针法(强烈推荐)

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

定义快慢指针

  • 快指针(侦察兵):寻找新数组的元素 ,新数组就是不含有目标元素的数组
  • 慢指针(整理员):指向更新 新数组下标的位置

很多同学这道题目做的很懵,就是不理解 快慢指针究竟都是什么含义,所以一定要明确含义,后面的思路就更容易理解了。

删除过程如下(一个for循环一起走一下,不在意谁先走,谁后走):

27.移除元素-双指针法

双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组、链表、字符串等操作的面试题,都使用双指针法。

本题代码如下:

// 时间复杂度:O(n)
// 空间复杂度:O(1)
// 时间复杂度:O(n)
// 空间复杂度:O(1)
class Solution {
public:int removeElement(vector<int>& nums, int val) {int slowIndex = 0;for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {if (val != nums[fastIndex]) {nums[slowIndex++] = nums[fastIndex];// 如果不是要删除的,快慢一起走//块赋给慢,是因为有时候可能块比慢多走了,这个时候俩个指针可以理解为对移除元素:视而不见}else{//快指针++}}return slowIndex;}
};

在这里插入图片描述
难点正是在于这个if函数:而且我们很容易得知,快慢指针之间的distance,就是val的个数,他们做到的其实是对val的一种视而不见,遇到val,快指针++,而且慢指针由于只接收快指针的值,也视而不见。(而且刚开始其实也赋值了,只不过自己赋给自己动图没有体现~)

注意这个实现方法并没有改变元素的相对位置!
在这里插入图片描述

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

2.3容器暴力find大法()

在这里插入图片描述

class Solution {
public:int removeElement(vector<int>& nums, int val) {vector<int>::iterator it=find(nums.begin(),nums.end(),val);while(it!=nums.end()){nums.erase(it);it=find(it,nums.end(),val);//it++; 不能这么搞啊 元芳!}return nums.size();}
}; 

在这里插入图片描述
注意:val不仅仅只有一个,所以得写在while循环里;而且find下一次的开始位置,是上一次find结束的位置,直到走到了end(),这个是非常易错的地方,一定要小心!!

三、相关题目推荐

  • 26.删除排序数组中的重复项
  • 283.移动零
  • 844.比较含退格的字符串
  • 977.有序数组的平方
http://www.mmbaike.com/news/32230.html

相关文章:

  • 广州网站建设 易企建站厦门seo招聘
  • vs连接数据库做网站阿里云免费域名
  • 企业网站建设训爱站网官网
  • 建设网站的价值淄博网站营销与推广
  • 网站建设的架构设计网站模板
  • 微擎可以做企业网站吗广告投放运营主要做什么
  • 国内适合个人做外贸的网站有哪些成品短视频软件大全下载手机版
  • 彩票娱乐网站建设seo入门到精通
  • 张雪峰谈广告学专业网站优化方案怎么写
  • 达州做淘宝网站郑州靠谱seo整站优化
  • 制作简易网站模板seo网站关键词优化快速官网
  • 网页设计规划优化营商环境条例全文
  • 个人做医疗类网站违法推广方案有哪些
  • ps网站banner怎么做贴吧推广
  • 一键生成淘宝主图的软件网站怎么优化关键词排名
  • 优秀的个人网站百度推广有哪些形式
  • 住房与城乡建设管理委员会网站seo网络排名优化
  • axure怎么做长页面网站aso优化教程
  • 焦作专业做网站公司百度引擎提交入口
  • 海口哪里做网站优化内容
  • 网站建设需要哪些软件优化搜索曝光次数的方法
  • 聊城手机网站建设巩义网站优化公司
  • 湛江自助建站软件怎么建网站免费的
  • 网站建站论坛最新国际新闻大事件
  • 镇海做网站买链接
  • 做网站深圳嘉兴seo外包公司
  • 北京网站建设制作长沙全网覆盖的网络推广
  • 企业备案网站名称怎么填阿里指数查询手机版
  • 婺源网站建设h5制作
  • 制作图片的软件加字seo软件全套