写点什么

LeetCode 刷题 704- 简单 - 二分查找

用户头像
ベ布小禅
关注
发布于: 1 小时前


前言

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!


第一遍,不求最优解,但求能过!!!


📢 这是我刷第 7/100 道力扣简单题

一、题目描述

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


难度:简单

二、题目解析

  1. 普通想法

  2. 设定一个变量接收答案,初始化值为-1

  3. 使用遍历,判断相等

  4. 相等就给变量重新赋值为该索引

  5. Python 关键字和内置函数

  6. 使用 in 关键字和 index()函数

  7. 判断目标值 target 是否存在在数组/列表中

  8. 如果在,就使用 index()函数返回索引

  9. 使用二分查找法左

  10. 典型的二分查找法

  11. 使用二分查找求出最后的索引后

  12. 判断目标值与元素是否相等

  13. 不相等返回-1

  14. 相等返回索引

三、代码

  1. 普通想法(暴力解法)


   class Solution:       def search(self, nums: List[int], target: int) -> int:           """           给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target             写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1           难度:**简单**           :param nums:           :param target:           :return:           """           ans=-1           for i in nums:               if target==i:                   ans= nums.index(i)           return ans
复制代码


  1. in 关键字与 index()函数


   class Solution:       def search(self, nums: List[int], target: int) -> int:           ans = 0           if target in nums:               ans = nums.index(target)           else:               ans = -1           return ans
复制代码


  1. 二分查找


   class Solution:       def search(self, nums: List[int], target: int) -> int:           """           给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target             写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1           难度:**简单**           :param nums:           :param target:           :return:           """           start = 0           end = len(nums) - 1           while start < end:               mid = (start + end) // 2               if target > nums[mid]:                   start = mid + 1               else:                   end = mid           if target==nums[start]:               return start           else:               return -1
复制代码


二分查找法为最优解法,占用内存和运行时间都占优

结语

坚持最重要,每日一题必不可少!



用户头像

ベ布小禅

关注

还未添加个人签名 2021.04.06 加入

平平无奇一萌新,默默无闻学IT,我是布小禅,一个网络专业却对编程及其感兴趣的小白! 目前在学python和Java,都很浅显,平时爱写点学习笔记。IT技术交流群:1039347613 也可以联系本人企鹅:2228660752 v:Smly0413

评论

发布
暂无评论
LeetCode刷题704-简单-二分查找