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

做视频网站 带宽多少才合适网文推广怎么做

做视频网站 带宽多少才合适,网文推广怎么做,找工作网站建设,wordpress怎么搭建分享网站⭐今日份题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中…

⭐今日份题目

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);
​
// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}

示例1

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

示例2

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,3,0,4]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

提示

  • 0 <= nums.length <= 100

  • 0 <= nums[i] <= 50

  • 0 <= val <= 100

⭐题目思路

这里还是提取一下题目的特征点:

  • 原地移除

原地移除,考虑用vector作为STL库中一员的erase函数,该函数可以在原数组中直接删除对应位置的元素,基本语法:

vector.erase(vector.begin()+i)//表示删除掉数组中下标为i的元素

这样的好处是无需额外的变量空间,但问题也随之产生:⭐原地删除后vector中的元素的下标会对应的发生变化,vector的长度也对应发生变化,那么就需要额外考虑下标的处理问题。大致有以下几个方面:

  • 删除掉下标为i的元素后,新一轮的for循环中下标为i的元素其实是还未被遍历过的,所以需要i--来遍历这个元素。

class Solution 
{
public:int removeElement(vector<int>& nums, int val) {for(int i=0;i<nums.size();i++){if(nums[i]==val) {nums.erase(nums.begin()+i);i--;}}return nums.size();}
};

该方法的执行用时和内存消耗如下图所示:

仍有进步的空间。

在之前调试的时候,我发现了一个很奇怪的现象,我在return前加了一句代码:

if(nums.size()==1&&nums[0]==val) return 0;

然后运行用时就变为了0ms,然后内存消耗反而增大了。这里我其实不是很理解,欢迎大佬们帮我解答一下,评论区见~

这道题也是有点典型的STL风,感兴趣的初学朋友可以去看一下~

⭐vector补充知识

vector还有一些常用的函数,这里补充一下:

//定义一个vector,类型为int
vector<int> a;
//定义一个int型长度为10的vector
vector<int> b(10);
//定义一个int型长度为10,初始值均为3的vector
vector<int> c(10,3);//将vector中的最后一个元素改成4
a.back()=4;
⭐(这个符号表示时间复杂度) O(1)
//清空vector
a.clear();
⭐ O(n)
//在vector末尾增加一个3
a.push_back(3);
⭐ O(1)
//删除末尾元素
a.pop_back();
⭐ O(1)//该部分比较少用,时间复杂度都为O(该变量)
//截取长度为11,缺的补0,不缺就直接截取
a.resize(11);
//截取长度为11,缺的补5
a.resize(11,5);//判断元素个数
a.size();
⭐ O(1)
//判断vector中是否无元素了,没有了就返回true
a.empty();
⭐ O(1)//vector作为迭代器
a.begin();//返回a的第一个元素的位置
a.end();//返回a的最后一个元素的下一个位置
sort(a.begin(),a.end());//插入删除,慎用,因为时间复杂度为O(n),有点慢
//在下标为2(从0开始)的位置插入0元素
a.insert(a.begin()+2,0);
//删除下标为2的元素
a.erase(a.begin()+2);
//删除区间,左闭右开
a.erase(a.begin()+1,a.begin()+4);

⭐一切会让vector长度变化的操作都可能让之前的迭代器失效,这也是该题目我们需要额外考虑的地方。

这里如果有不懂的地方欢迎评论区留言⭐~

⭐代码

class Solution 
{
public:int removeElement(vector<int>& nums, int val) {for(int i=0;i<nums.size();i++){if(nums[i]==val) {nums.erase(nums.begin()+i);i--;}}if(nums.size()==1&&nums[0]==val) return 0;return nums.size();}
};

提交结果

我的代码还有待改进,欢迎大家提供更高效的代码,如果过后有更优化的思路我还会继续更新的,大家评论区见!

点赞收藏不迷路⭐~

http://www.hrbkazy.com/news/25514.html

相关文章:

  • 做网站需要哪些东西和步骤360建站官网
  • b2b平台网站功能市场营销师报名官网
  • 自己做考试题目网站手机百度下载app
  • 濮阳网站建设价格seo网站推广批发
  • 建设网站包括哪些百度竞价教程
  • 自己电脑怎么做网站晋城今日头条新闻
  • 苏州企业网站设计搜索引擎优化代理
  • 宁波seo网站建设费用搜索优化是什么意思
  • 市体育局网站 两学一做北京seo多少钱
  • 网站开发与应用论文产品关键词大全
  • 旅游网站建设规划百度推广官网
  • 政法网站内容建设微信营销软件排行榜
  • 高速公路建设管理局网站网易最新消息新闻
  • wordpress 移动到回收站发生错误网络营销的未来发展趋势
  • 贵州快速整站优化宁波网站建设公司
  • 独立网站怎么做推广设计培训班学费一般多少
  • 微信公众号微网站怎么建设关键词搜索排名优化
  • 白云电子商务网站建设内容营销平台有哪些
  • 美区国区家庭共享搜索引擎优化的含义和目标
  • wordpress 翻页没内容甲马营seo网站优化的
  • 网站接入变更skr搜索引擎入口
  • 网站国内服务器租用百度关键词关键词大全
  • 设计网站栏目seo 视频
  • ppt超链接网站怎么做南通网站快速收录
  • 建设有限公司网站seo公司北京
  • 赤裸做爰游戏漫画网站中国局势最新消息今天
  • 天河做网站开发2345纯净版推广包
  • qq浏览器网页版入口seo是指搜索引擎营销
  • 公司网站建站模板模板360优化大师安卓版下载
  • 做网站的经历微信scrm