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

网站维护 内容网站突然掉排名

网站维护 内容,网站突然掉排名,西安公司招聘,公司做网站怎么赚钱目录 数组基础知识补充 704. 二分查找 题目 左闭右闭方法 思路 代码 左闭右开方法 思路 代码 27. 移除元素 题目 暴力解法 思路 代码 双指针法 思路 代码 数组基础知识补充 1. 在leecode中#xff0c;数组一般是以vector容器的形式出现的#xff0c;虽然ve…目录 数组基础知识补充 704. 二分查找 题目 左闭右闭方法 思路 代码 左闭右开方法 思路 代码 27. 移除元素 题目 暴力解法 思路 代码 双指针法 思路 代码 数组基础知识补充 1. 在leecode中数组一般是以vector容器的形式出现的虽然vector的底层实现是array但严格来讲vector是容器不是数组 2. 数组元素的删除和增添都需要移动后续元素而且在实现的角度上看数组元素是不能删的只能用后一个元素将其覆盖掉然后再逐个覆盖就相当于向前移动后续元素了 3. C二维数组的存储空间是连续的但Java的不是Java中每一个外层数组都会有指针指向内层数组的地址。 704. 二分查找 题目 左闭右闭方法 左闭右闭意味着搜索区间是闭合的比如 [ 1 , 5 ]在这种区间搜索元素两个指针指向同一个元素时一定是有意义的因为区间涉及到的元素都在区间内 但如果搜索区间是半开半闭的那么就要考虑指针不能指向开的那个元素需要对代码进行一定的改动。 思路 用二分查找来做这道题是高效且简单的因为元素递增不重复 闭合区间二分的思路是分别给数组的最左边和最右边一个指针每次通过求两个指针指向地址的中间处那个元素的值来判断是否和目标值相等相等的话就返回中间处的值的下标不相等的话则分为两种情况 如果中间处的值小于目标值以为这中间处以及它的左边的元素都太小所以接下来我们就把搜索区间的左边界缩到中间处右边一个的元素那里 如果中间处的值大于目标值同理就把搜索区间的右边界缩小到中间处左边一个的元素那里。 因为这里是一个闭区间所以二分的终止条件就是两个指针指向相同这时候如果指向的元素不等于目标值那就返回 -1 。 代码 class Solution { public:int search(vectorint nums, int target) {int l 0, r nums.size() - 1; int mid 0;while (l r) {mid l (r - l) / 2; // 防止l和r过大直接相加越界if (nums[mid] target)return mid;if (nums[mid] target)l mid 1;elser mid - 1;}// 带入一个有两个元素的数组测试样例就知道如果我们的目标是后者第一次的mid指向前面那个后面的l加一以后就指向目标了这时候l和r相等mid也和它们相等了可以得到结论//如果没有在while条件中写那么l和r指向相同时就直接跳出循环了这时候mid还未赋新值就会出错return -1;} }; 左闭右开方法 思路 大体上和上面的方法一样主要注意的是while的终止条件这时候就不能是指针指向相同了要把等于号去掉因为区间边界一开一闭两者显然是不能混为一谈的 另外开区间的那一边的搜索边界需要注意如果mid指向的元素大于目标值那么这时候将有边界缩小到mid即可不用减一具体见代码。 代码 class Solution { public:int search(vectorint nums, int target) {int l 0, r nums.size();while (l r) {int mid l (r - l) / 2;if (nums[mid] target)l mid 1;else if (nums[mid] target)r mid; // 这时候不能再写mid-1了因为这是开区间mid肯定不可能是目标值了但是mid-1可能是如果把mid-1赋值给r那就意味着排除掉了mid-1elsereturn mid;}return -1;} }; 27. 移除元素 题目 给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。 不要使用额外的数组空间你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums [3,2,2,3], val 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums [0,1,2,2,3,0,4,2], val 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。 你不需要考虑数组中超出新长度后面的元素。 暴力解法 思路 用内外两层指针外层指针遍历数组并寻找和目标值相等的元素找到以后使用内层指针遍历该元素之后的所有元素将所有元素往前移动一位其实就是用后一个元素将前一个元素覆盖掉 其中有一些细节需要注意首先是数组长度要实时记录最后返回的就是数组长度而且每次覆盖一轮后数组长度就减一了所以外层指针相应地也要减一。 代码 class Solution { public:int removeElement(vectorint 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--;size--;} }return size;} }; 双指针法 思路 使用一快一慢两个指针用一个for循环完成两个for循环的任务。 首先定义一个慢指针在此基础上再定义一个快指针在数组里从头扫到尾如果遇见不等于目标值的数就把这个数赋值给慢指针相当于用慢指针创造了一个不包含目标值的新数组但是这个新数组使用的就是原数组的空间。 代码 class Solution { public:int removeElement(vectorint nums, int val) {int slow 0;for (int fast 0; fast nums.size(); fast) {if (nums[fast] ! val)nums[slow] nums[fast];}return slow; // 因为最后slow还有一个所以这里直接返回不用1} };
http://www.w-s-a.com/news/589000/

相关文章:

  • 做网上竞彩网站合法吗免费网站建设品牌
  • 网站开发所需要的的环境客户关系管理的内涵
  • 优质做网站公司做软件的人叫什么
  • 徐州市徐州市城乡建设局网站首页网站建设刂金手指下拉十五
  • 建设游戏网站目的及其定位市场营销策略概念
  • 小学电教检查网站建设资料wordpress谷歌字体
  • 南通做网站的公司有哪些中国建筑论坛网
  • 技术支持 佛山网站建设wordpress不用ftp
  • 广州定制app开发wordpress配置搜索引擎优化
  • 兰州网站建设论坛四川建设网官网登录
  • 在线作图免费网站湖南批量出品机
  • 深圳做网站公司有哪些地方妇联加强网站平台建设
  • vps建设网站别人访问不了网页链接生成器
  • 网站建设一般要多少钱电商平台取名字大全
  • 怎么做网站封面上的图网站开发语言 微信接口
  • 免费观看网站建设优化安徽
  • 上海电商网站开发公司做婚恋网站的翻译好吗
  • 以网站建设为开题报告大数据技术就业前景
  • dw做网站字体 别人电脑显示青岛活动策划公司
  • 网站成立时间查询墨猴seo排名公司
  • 技术支持 随州网站建设苏州企业网站建设定制
  • 美食网站开发目的与意义网站开发环境选择
  • 青岛西海岸新区城市建设局网站开发板在null不可用
  • 企业信息管理系统免费seo优化个人博客
  • 做任务的设计网站泰州哪里做网站
  • 什么网站可以做设计赚钱吗南京十大软件公司排名
  • 网站开发时间进度北京有哪些著名网站
  • 深圳比较好的设计网站公司自己的网站到期域名如何续费
  • 温州做网站哪儿新云网站模版
  • 网站开发 视频存在哪检察院前期网站建设