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

常州市做网站的公司服装设计参考网站

常州市做网站的公司,服装设计参考网站,万能证在线制作生成器,网站主题旁边的图标怎么做二分查找704. 二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置结语704. 二分查找 给定一个 n 个元素有序的#xff08;升序#xff09;整型数组 nums 和一个目标值 target #xff0c;写一个函数搜索 nums 中的 target#xff0c;如果目标值存在… 二分查找704. 二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置结语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变量一个r变量一个mid分别表示的左值右值中值。 然后对每一次的mid中值进行一次check当循环正常结束就是没有target值 返回-1. 代码 int search(int* nums, int numsSize, int target){int left0,rightnumsSize-1;int mid(leftright)/2;while(leftright){if(nums[mid]target){rightmid;}else leftmid1;mid(leftright)/2;}if(nums[left]target)return left;return -1;}35. 搜索插入位置 给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 输入: nums [1,3,5,6], target 5 输出: 2 输入: nums [1,3,5,6], target 2 输出: 1 输入: nums [1,3,5,6], target 7 输出: 4 链接: 搜索插入位置 这道题是二分查找的稍微进阶相较于上一题需要考虑边界情况 以及最后的返回值。 将上一题的代码拷贝下来 while(leftright) {if(nums[mid]target){return mid;}if(nums[mid]target){rightmid-1;}if(nums[mid]target){leftmid1;}mid(leftright)/2;这是部分代码从题中可知 如果在遍历的时候找到与target对应的值那么可以直接返回此时的下标mid 如果没有找到的话循环结束后lrmid这三个下标哪个是正确的返回值呢。 由题意得返回的是按照值大小顺序插入的位置所以返回了l的下标。 代码 int searchInsert(int* nums, int numsSize, int target){int right numsSize-1;int left0;int mid(rightleft)/2;while(leftright){if(nums[mid]target){return mid;}if(nums[mid]target){rightmid-1;}if(nums[mid]target){leftmid1;}mid(leftright)/2;}return left;}34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1 输入nums [5,7,7,8,8,10], target 8 输出[3,4]示例 2 输入nums [5,7,7,8,8,10], target 6 输出[-1,-1]示例 3 输入nums [], target 0 输出[-1,-1]链接: 在排序数组中查找元素的第一个和最后一个位置 解题思路 1.题目要求找出等于target大小的数组元素下标的开始位置和结束位置。 2.也就说需要进行两次二分查找一次找出开始位置一次找出结束位置 3.找出开始位置 当数组中有target元素的时候我们可以将其分为两个部分第一个部分范围为所有 小于target的值第二部分则为所有 大于等于target的值由此可知第二部分的开头位置的下标即为所求 代码 int l 0;int r nums.size() - 1;int mid (l r) / 2;while (l r){if (nums[mid] target){r mid;}else{l mid 1;}mid (l r) / 2;}4.找出结束位置下标同上 当数组中有target元素的时候我们可以将其分为两个部分第一个部分范围为所有 小于等于target的值第二部分则为所有 大于target的值由此可知第一部分的结束位置的下标即为所求 注意 此时随着循环更新的是l的值所以更新方式应改变。midlr1/2 代码 l 0; r nums.size() - 1; mid (l r 1) / 2; while (l r) {if (nums[mid] target){l mid;}else{r mid - 1;}mid (r l 1) / 2; }每次求出也要检查所求下标对应的值是否为target。 代码 class Solution { public:vectorint searchRange(vectorint nums, int target) {vectorint ans;//特殊情况处理if(nums.size()0){ans.push_back(-1);ans.push_back(-1);return ans;}//初始位置int l 0;int r nums.size() - 1;int mid (l r) / 2;while (l r){if (nums[mid] target){r mid;}else{l mid 1;}mid (l r) / 2;}if (nums[l] target) ans.push_back(l);else ans.push_back(-1);//结束位置l 0;r nums.size() - 1;mid (l r 1) / 2;while (l r){if (nums[mid] target){l mid;}else{r mid - 1;}mid (r l 1) / 2;}if (nums[r] target) ans.push_back(r);else ans.push_back(-1);return ans;} };结语 本期的二分查找到此结束希望对各位有所帮助 我是Tom-猫 如果觉得有帮助的话记得 一键三连哦ヾ(≧▽≦*)o。
http://www.w-s-a.com/news/404915/

相关文章:

  • 视频网站开发计划书wordpress文件详情
  • 重庆付费网站推广电商网站 开发周期
  • thinkcmf 做企业网站视频播放类网站建设费用
  • vps网站助手大学选修课网站建设
  • 南浦电商网站建设北京海淀社保网站
  • 传奇网站模板怎么做的吗大连警方最新通告
  • 成都私人做公司网站的北京网站建设需要多少钱
  • 魔客吧是什麼程序做的网站代理厦门网站设计公司
  • 90设计手机站东营网站推广
  • 哪家购物网站建设好专门做水生植物销售网站
  • php医院网站开发兼职app开发网上app开发
  • 接任务做兼职的的网站衡阳手机网站设计
  • 徐州经济开发区网站佛山百度关键词seo外包
  • 肃宁网站建设有限责任公司法人承担什么责任
  • 珠海斗门建设局网站如何免费做网站
  • 自助外贸网站建设可直接打开网站的网页
  • 江苏城嘉建设工程有限公司网站潍坊网站定制公司
  • 四川省住房和城乡建设厅新网站宜昌建设厅网站
  • 建设网站一般流程建设开发网站
  • 设计外贸英文网站国家企业信息信用公信系统
  • 主题资源网站创建时 如何突出设计的特点阿里云是做网站的吗
  • 乌市建设工程质量监督站网站外资公司注册
  • 档案馆网站机房建设做游戏网站打鱼
  • 网站建设平台 创新模式搭建好ftp服务器 如何通过网站访问
  • 苏州集团网站制作设计网页制作软件ai
  • 网站建设新手教程视频教程手帐风格wordpress主题
  • 做投标网站条件网站更改指定字段
  • mvc5 网站开发之美做印刷网站公司
  • 医疗网站建设精英微信网站用什么制作的
  • 银川网站设计联系电话地推加人2元1个