代码随想录算法训练营第一天|704.二分查找、27.移除元素

03-11 1224阅读

个人简介:

大一新生(主攻C、C++)                                             专业:计算机科学与技术

代码随想录算法训练营第一天|704.二分查找、27.移除元素
(图片来源网络,侵删)

引言:

        刚接触算法,每一个算法的设计总是让我深思,从时间和空间的角度考虑算法的可行性。即使最开始会很枯燥,甚至烦躁,但是当静下心来,理清思路,从变量的定义,数据类型的转化,循环······ 

         ···

        反正,坚持下去就对了!这一次,是为了“热爱”

 一.(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
提示:
  1. 你可以假设 nums 中的所有元素是不重复的。
  2. 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]
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]