代码随想录算法训练营第一天|704.二分查找、27.移除元素
个人简介:
大一新生(主攻C、C++) 专业:计算机科学与技术
(图片来源网络,侵删)
引言:
刚接触算法,每一个算法的设计总是让我深思,从时间和空间的角度考虑算法的可行性。即使最开始会很枯燥,甚至烦躁,但是当静下心来,理清思路,从变量的定义,数据类型的转化,循环······
···
反正,坚持下去就对了!这一次,是为了“热爱”
一.(704. 二分查找 - 力扣(LeetCode))
1.题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
输入: nums=[-1,0,3,5,9,12], target=9输出: 4 解释: 9 出现在nums中并且下标为 4
示例 2:
输入: nums= [-1,0,3,5,9,12], target = 2输出: -1 解释: 2 不存在nums中因此返回 -1
提示:
- 你可以假设 nums 中的所有元素是不重复的。
- n 将在 [1, 10000]之间
2.思路:
1.定义变量
类型:整形int
意义:left:数组最左边数字的下标 ;
right :数组最右边数字的下标;
middle:数组中间数的下标;
2.逻辑流程
利用二分法,不断更新区间
3.代码实现
1.左闭右闭:
C++
//左闭右闭 [left,right] class Solution { public: int search(vector& nums, int target) { int left = 0,right =nums.size()-1,middle; //定义出左右区间及中间值 while(left>1) if(nums[middle]>target){ right =middle-1; //更新右区间 } else if(nums[middle]target){ right =middle; //更新右区间 } else if(nums[middle]
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。