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

潍坊知名网站建设价格低福州百度首页优化

潍坊知名网站建设价格低,福州百度首页优化,怎么利用快站做网站,网站开发培训周末班704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 …

704. 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

输入: nums = [-1,0,3,5,9,12], target = 9     
输出: 4       
解释: 9 出现在 nums 中并且下标为 4     
输入: nums = [-1,0,3,5,9,12], target = 2     
输出: -1        
解释: 2 不存在 nums 中因此返回 -1      

解题思路:

还是喜欢左闭右闭的写法。左闭右闭的写法关键是:

  • 当l = 0, r = n - 1的时候因为r这个值我们在数组中可以取到,while(l <= r) 是正确写法 主要看能不能取到这个值。
  • 二分的最大优势是在于其时间复杂度是O(logn),通常看到有序数组都要第一时间反问自己是否可以使用二分。
  • 关于二分mid溢出问题解答:
    • mid = (l + r) / 2时,如果l + r 大于 INT_MAX(C++内,就是int整型的上限),那么就会产生溢出问题(int类型无法表示该数)
    • 所以写成 mid = l + (r - l) / 2或者 mid = l + ((r - l) >> 1) 可以避免溢出问题

C++版本:

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while(left<=right){int middle = left + (right-left)/2;if(nums[middle] < target){left = middle + 1;}else if(nums[middle] > target){right = middle - 1;}else return middle;}return -1;}
};

Python版本

class Solution:def search(self, nums: List[int], target: int) -> int:left = 0right = len(nums) - 1while(left <= right):middle = (left + right)//2if(nums[middle]>target):right = middle - 1elif(nums[middle]<target):left = middle + 1else:return middlereturn -1  

27. 移除元素

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

不要使用额外的数组空间,你必须仅使用 O(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],也会被视作正确答案。
输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度,并且 nums 中的前五个元素为0,1,3,0,4.

解题思路:

 这个题需要不额外使用空间,只能原地修改。

解法1:采用Vector中的erase消除指定值,传入相应的迭代器即可删除,注意erase返回的是指向下一个值的迭代器。

C++版本

class Solution {
public:int removeElement(vector<int>& nums, int val) {for(vector<int>::iterator iter = nums.begin(); iter != nums.end();)if(*iter == val){iter = nums.erase(iter);}else{iter++;}return nums.size();  }
};

Python版本:Python则采用List的remove方法

class Solution:def removeElement(self, nums: List[int], val: int) -> int:while val in nums:nums.remove(val)return len(nums)

2、采用快慢指针法。

  • 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
  • 慢指针:指向更新 新数组下标的位置

 C++版本:

class Solution {
public:int removeElement(vector<int>& nums, int val) {int fastIndex = 0, slowIdex = 0;for(fastIndex; fastIndex<nums.size();fastIndex++){if (nums[fastIndex] == val){continue;}else{nums[slowIdex] = nums[fastIndex];slowIdex++;}}return slowIdex;}
};

 python版本:

class Solution:def removeElement(self, nums: List[int], val: int) -> int:slowIndex = 0for fastIndex in range(len(nums)):if nums[fastIndex] == val:continueelse:nums[slowIndex] = nums[fastIndex]slowIndex += 1return slowIndex
http://www.yidumall.com/news/94309.html

相关文章:

  • 网站建设需要什么语言四川全网推网络推广
  • 手机wap网站的分析有哪些平台可以免费发广告
  • 做网站二维码12月30日疫情最新消息
  • 做网站的商标是哪类谷歌搜索引擎免费入口 香港
  • 哪家公司建站比较好西安seo技术培训班
  • 成都网站seo排名seo网站优化推广教程
  • 日本疫情最新消息安卓优化软件
  • 南京广告公司地址seo技术蜘蛛屯
  • 门户网站内容维护流程目前最新推广平台
  • 网站排名乐云seo谷歌seo是指什么意思
  • 海外主机做黄色网站青岛百度网站排名
  • 网站域名地址查询近期国家新闻
  • 常州网站建设外包公司哪家好百度seo查询工具
  • 怎么打帮人做网站开发的广告北京网站优化培训
  • 做网站花了三万块百度网址安全检测中心
  • 手机网站运营怎么在百度上注册店铺
  • 如何使用花生壳做网站免费seo视频教学
  • 织梦做的网站怎么传到网上企业网站优化技巧
  • web官网网页上海百度整站优化服务
  • wordpress 安装轮播百度关键词seo优化
  • WordPress建站去掉后缀网络推广文案怎么写
  • 免费的创建个人网站山西疫情最新情况
  • 网站建设 设计创意收录查询
  • 深圳做响应式网站制作关键词搜索引擎排名查询
  • 网站内页301网络推广外包流程
  • 如何申请域名建立网站正规代运营公司
  • 正规网站建设哪家好seo网络优化教程
  • 网站开发语言在那看出来网站设计开发网站
  • 做英文网站百度导航下载2022最新版
  • 社区教育网站建设项目计划书php开源建站系统