草庐IT

二分类

全部标签

刷题笔记1 | 704. 二分查找,27. 移除元素

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=0,r=n-1的时候因为r这个值我们在数组中可以取到,while(l二分的最大优势是在于其时

刷题笔记1 | 704. 二分查找,27. 移除元素

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=0,r=n-1的时候因为r这个值我们在数组中可以取到,while(l二分的最大优势是在于其时

“二分”带来“十分”快感——二分思想的奥秘解析

文章目录无处不在的二分思想二分查找惊人的查找速度二分查找的递归与非递归实现1.循环退出条件2.mid的取值3.low和high的更新最后说一句🐱‍🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一起进步。👿本文收录于算法,本专栏是针对大学生、初学算法的人准备,解析常见的数据结构与算法,同时备战蓝桥杯。无处不在的二分思想二分查找是一种非常简单易懂的快速查找算法,生活中到处可见。比如说,我们现在来做一个猜字游戏。我随机写一个0到99之间的数字,然后你来猜我写的是什么。猜的过程中,你每猜一次,我就会告诉你猜的大了还是小了,直到猜中为止。你来想想,如何快速猜中我写的数字呢?假设我写的数字是2

“二分”带来“十分”快感——二分思想的奥秘解析

文章目录无处不在的二分思想二分查找惊人的查找速度二分查找的递归与非递归实现1.循环退出条件2.mid的取值3.low和high的更新最后说一句🐱‍🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一起进步。👿本文收录于算法,本专栏是针对大学生、初学算法的人准备,解析常见的数据结构与算法,同时备战蓝桥杯。无处不在的二分思想二分查找是一种非常简单易懂的快速查找算法,生活中到处可见。比如说,我们现在来做一个猜字游戏。我随机写一个0到99之间的数字,然后你来猜我写的是什么。猜的过程中,你每猜一次,我就会告诉你猜的大了还是小了,直到猜中为止。你来想想,如何快速猜中我写的数字呢?假设我写的数字是2

蓝桥杯AcWing 题目题解 - 二分与前缀和、差分

目录AcWing789.数的范围-整数二分AcWing790.数的三次方根-实数二分AcWing730.机器人跳跃问题-二分应用AcWing1227.分巧克力 AcWing795.前缀和AcWing796.子矩阵的和-二维前缀和AcWing797.差分 AcWing798.差分矩阵-二维差分整数二分步骤:1.找一个区间[L,R],使得答案一定在该区间中2找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。3.分析终点M在该判断条件下是否成立,如果成立,考虑答案在哪个区间;如果不成立,考虑答案在哪个区间;4.如果更新方式写的是R(右)=Mid,则不用做任何处理;如果更新方式

蓝桥杯AcWing 题目题解 - 二分与前缀和、差分

目录AcWing789.数的范围-整数二分AcWing790.数的三次方根-实数二分AcWing730.机器人跳跃问题-二分应用AcWing1227.分巧克力 AcWing795.前缀和AcWing796.子矩阵的和-二维前缀和AcWing797.差分 AcWing798.差分矩阵-二维差分整数二分步骤:1.找一个区间[L,R],使得答案一定在该区间中2找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。3.分析终点M在该判断条件下是否成立,如果成立,考虑答案在哪个区间;如果不成立,考虑答案在哪个区间;4.如果更新方式写的是R(右)=Mid,则不用做任何处理;如果更新方式

从二分搜索到二叉搜索树

引言打算写写树形数据结构:二叉查找树、红黑树、跳表和B树。这些数据结构都是为了解决同一个基本问题:如何快速地对一个大集合执行增删改查。本篇是第一篇,讲讲搜索树的基础:二叉搜索树。基本问题如何在一千万个手机号中快速找到13012345432这个号(以及相关联信息,如号主姓名)?最笨的方案把一千万个手机号从头到尾遍历一遍,直到找到该手机号,返回对应的姓名。其时间复杂度是O(n)————当然这肯定不是我们要的方案。最秀的方案用散列表,可以在O(1)的时间复杂度完成查找。关于散列表的原理和代码参见算法(TypeScript版本)。散列表的问题散列表的查询性能非常优秀,插入和删除的性能也不赖,但它有什么

从二分搜索到二叉搜索树

引言打算写写树形数据结构:二叉查找树、红黑树、跳表和B树。这些数据结构都是为了解决同一个基本问题:如何快速地对一个大集合执行增删改查。本篇是第一篇,讲讲搜索树的基础:二叉搜索树。基本问题如何在一千万个手机号中快速找到13012345432这个号(以及相关联信息,如号主姓名)?最笨的方案把一千万个手机号从头到尾遍历一遍,直到找到该手机号,返回对应的姓名。其时间复杂度是O(n)————当然这肯定不是我们要的方案。最秀的方案用散列表,可以在O(1)的时间复杂度完成查找。关于散列表的原理和代码参见算法(TypeScript版本)。散列表的问题散列表的查询性能非常优秀,插入和删除的性能也不赖,但它有什么

二分搜索树的特性

二分搜索树的特性一、顺序性二分搜索树可以当做查找表的一种实现。我们使用二分搜索树的目的是通过查找key马上得到value。minimum、maximum、successor(后继)、predecessor(前驱)、floor(地板)、ceil(天花板、rank(排名第几的元素)、select(排名第n的元素是谁)这些都是二分搜索树顺序性的表现。二、局限性二分搜索树在时间性能上是具有局限性的。如下图所示,元素节点一样,组成两种不同的二分搜索树,都是满足定义的:二叉搜索树可能退化成链表,相应的,二叉搜索树的查找操作是和这棵树的高度相关的,而此时这颗树的高度就是这颗树的节点数n,同时二叉搜索树相应的

二分搜索树的特性

二分搜索树的特性一、顺序性二分搜索树可以当做查找表的一种实现。我们使用二分搜索树的目的是通过查找key马上得到value。minimum、maximum、successor(后继)、predecessor(前驱)、floor(地板)、ceil(天花板、rank(排名第几的元素)、select(排名第n的元素是谁)这些都是二分搜索树顺序性的表现。二、局限性二分搜索树在时间性能上是具有局限性的。如下图所示,元素节点一样,组成两种不同的二分搜索树,都是满足定义的:二叉搜索树可能退化成链表,相应的,二叉搜索树的查找操作是和这棵树的高度相关的,而此时这颗树的高度就是这颗树的节点数n,同时二叉搜索树相应的