![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分查找
天天向上的菜鸡杰!!
生活明朗 万物可爱 人间值得 全力以赴
展开
-
leetcode367. 有效的完全平方数
一:题目二:上码class Solution {public: /** 完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数 思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半 2.那么这就相当于在[left,num/2]中查找某个数,其的平方正好可以是num */ bool isPerfectSquare(int num) { if(num == 1) r原创 2022-03-24 17:24:23 · 1101 阅读 · 0 评论 -
leetcote34. 在排序数组中查找元素的第一个和最后一个位置
一:题目二:上码(暴力+二分)// class Solution {// public:// /**// 思路:1.首先这是一个升序的 那么相同的一定是会相连的// */// vector<int> searchRange(vector<int>& nums, int target) {// int flag = 0;// int start = 0; //原创 2022-03-24 16:16:41 · 138 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
一:题目二:上码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(null原创 2022-01-19 21:43:02 · 396 阅读 · 0 评论 -
leetcode:203. 移除链表元素(两种方法)
一:题目二:上码1:方法一:(虚拟一个首结点)class Solution {public: ListNode* removeElements(ListNode* head, int val) { //1.虚拟一个头结点 这样就不用单独处理了 ListNode * virtuals = new ListNode(0);//给其开辟个空间并且赋初值 virtuals->next = head; List原创 2022-01-02 21:33:25 · 131 阅读 · 0 评论 -
367. 有效的完全平方数(二分法)
一:题目二:思路完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半2.那么这就相当于在[left,num/2]中查找某个数,其的平方正好可以是num三:上码class Solution {public: /** 完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数 思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯原创 2021-12-25 22:47:20 · 434 阅读 · 1 评论 -
leetcode704二分法:(左闭右闭+左闭右开)
一:题目二:思路1.前提注意这里的数组一定要是有序的,并不是任何数组均可用二分法查找target,他必须有序才可2:左闭右闭(指的是区间)(1):while(left<=right)中的 <=这里的等于号 是当 left == right 的时候,这个区间[left,right]内我们还是可以找到target的nums[1,4,7,9,11,13] 在这个数组中我们找target = 13(2):区间的变化我们每次在缩小的范围的时候采取的是[left,right],当ta原创 2021-12-25 21:40:42 · 653 阅读 · 0 评论 -
81. 搜索旋转排序数组 II(014)二分查找+思路+详解+二种做法
一:题目已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]原创 2021-10-19 21:32:16 · 402 阅读 · 0 评论 -
33. 搜索旋转排序数组(013)二分查找+思路详解+来干了这杯代码!!!!!!
一:题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个原创 2021-10-19 21:10:24 · 67 阅读 · 0 评论 -
二分查找(划分时左右元素个数不相等)解析+代码
一:问题描述当我们在用二分法查找元素的时候,我们往往特希望遇到是奇数个元素个数的数组,因为划分完左右两边的个数相等,所以在以前刚学二分法的时候就有这个疑问,当时就是模模糊糊过去了,再遇到其实还是会有疑问。现在实例验证遇见偶数个数数组元素个数时的二分法二:思路+示例目标:查询数组当中是否存在某个数,存在返回其下标,不存在返回-1;思路:1.这是一个很典型的二分查找的例子,但关键的是我们要考虑其中的符号问题2.也就是左闭右闭,左闭右开,左开右闭,这是二分法的重点,3.我们一般使用的是左闭右闭,即[l原创 2021-10-16 21:13:16 · 551 阅读 · 0 评论 -
69. Sqrt(x)010(二分法求解+详解注释)
一:题目‘给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。二:上码class Solution {public: int mySqrt(int a) {原创 2021-10-16 21:16:30 · 88 阅读 · 0 评论 -
35. 搜索插入位置011(二分查找)
一:题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6],原创 2021-10-18 20:08:25 · 59 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置012(二分查找+思路+详解+两种方法)Come Baby!!!!!!!! !
一:题目给定一个按照升序排列的整数数组 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 =原创 2021-10-18 21:54:01 · 191 阅读 · 0 评论