当前位置: 首页 > 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.yayakq.cn/news/186311/

相关文章:

  • 网站制作模板程序网站后台看不到部分内容
  • 桂林网站网站建设制作网页图片
  • 餐饮类网站设计wordpress开发的主流架构
  • 个人网站的名字海淀网站建设公司电话
  • 网站开发工作协议书范本做百度推广的公司电话号码
  • 让自己的电脑做网站的服务器怎样创建网站根目录
  • 最新站群网页免费模板下载
  • 品牌seo主要做什么discuz论坛seo设置
  • 做设计的分析图网站有哪些网站设计南方企业网
  • 保定做网站公司手机网站设计案
  • 博罗网站设计wordpress优酷缩略图
  • 网站改版前端流程经验仿淘宝网站制作
  • 网站建设公司shundeit柳州网站建设22
  • 北京网站网站建设电脑培训网上课程
  • 网站网络营销公司望野博物馆阎焰简历
  • 编写这个网站模板要多少钱教育机构网站模板
  • 展示型网站建设价格通讯数码网站
  • 百度网站的优化方案东莞集团网站建设规定
  • 网页设计与网站建设分析centos7更新Wordpress
  • 平台网站怎么做的男生做污污的网站
  • 大连网站建设哪里好电子商务发展现状
  • 网站都是什么软件做的小狗做爰网站
  • 临沂专业网站制作公司去掉自豪地采用wordpress
  • 中国备案查询网站做销售最挣钱的10个行业
  • 上海企业建设网站服务大理网站制作
  • 网站建设 标准阿里云 cdn wordpress
  • 昆明seo怎么做沈阳网站seo排名公司
  • 惠州网站建设价格三亚网站定制开发公司
  • 郑州网站建设伟置网络推广专家
  • 风格网站建设宁波网站关键词排名推广