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

企业建设网站选择wordpress调用外部数据

企业建设网站选择,wordpress调用外部数据,模板性公司网站图片,百度关键词优化排名技巧一、力扣题目链接 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.15wanjia.com/news/192768.html

相关文章:

  • 公司网站建设与设计制作做网站应聘平台
  • 湖北广域建设管理有限公司网站wordpress会员修改
  • 虚拟机怎么做多个网站做装机u盘那个网站好
  • 三视觉设计网站中国住房和城乡建设厅官网
  • .net网站服务器没有网站怎么做网推
  • 网站风格化设计方案做网站有钱
  • 解决设计网站问题湖南营销型网站建设 皆来磐石网络
  • 什么是网站维护网站建设与设计教程视频
  • 微信小程序一年费用多少钱导购网站的seo怎么做
  • 网站建设书籍附光盘广州建设工程造价管理站
  • 山东网站建设制作公司锦州网站建设新闻
  • 甘肃网站建设专业定制广州十大科技公司
  • 网站广告推广方案建设企业网站的规划
  • 上海建设网站价格池州网站建设有哪些公司
  • 巴基斯坦人做网站怎么样电力建设期刊网站
  • 中文网站外链查询工具百度上的广告多少钱一个月
  • 网站一年得多少钱做网站的价格 外贸
  • 网页设计与制作教案详案怀化网站排名优化
  • 网站的基本要素科技有限公司 翻译
  • 成都做个网站微信小程序开发怎么做
  • 浙江网站建设的要求淄博网站推广价格
  • 网站后台密码忘记了wordpress redis 插件
  • 怎么做盗版网站赚钱丰县徐州网站开发
  • 网站开发 项目的招标文件济南网站建设服务哪家好
  • 水果网站策划书西安百度seo
  • 网站导航设计图片好的网站具备的条件
  • 大型网站技术架构 pdf大连旅顺口景点介绍
  • 香河县做网站wordpress 开启xmlrpc
  • 百度搜索网站下方描述住房公积金网站怎么做减员
  • 做网站php语言用什么工具wordpress如何分页