首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
编程导航算法通关村
空白无上
创建于2023-11-26
订阅专栏
本专栏记录学习算法的经验文章
等 1 人订阅
共45篇文章
创建于2023-11-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
编程导航算法通关村第十六关 | 滑动窗口基础
滑动窗口基本思想 在数组双指针里,我们介绍过“对撞型”和“快慢型”两种方式,而滑动窗口思想其实就是快慢型的特例。学过计算机网络的同学都知道滑动窗口协议(Sliding Window Protocol)
编程导航算法通关村第十五关 | 继续研究超大规模数据场景的问题
对20GB文件进行排序 题目要求:假设你有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序? 分析:这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到内存里,因此我们
编程导航算法通关村第十五关 | 海量数据场景下的热门算法题
从40个亿中产生一个不存在的整数 题目要求:给定一个输入文件,包含40亿个非负整数,请设计一个算法,产生一个不存在该文件中的整数,假设你有1GB的内存来完成这项任务。 进阶:如果只有10MB的内存可用
编程导航算法通关村第十五关 | 用4KB内存寻找重复元素
用4KB内存寻找重复元素 题目要求:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。 分析:本身是一道海
编程导航算法通关村第十四关 | 数据流的中位数
数据流中中位数的问题 . - 力扣(LeetCode) 这是一道比较难的题目了,如果没专门学过,很难在面试时想到。 中位数的题,我们一般都可以用 大顶堆 + 小顶堆来求解,下面我们通过直观的例子解释一
编程导航算法通关村第十四关 | 堆能高效解决的经典问题
在数组中找第K大的元素 . - 力扣(LeetCode) 这个题是一道非常重要的题,主要解决方法有三个,选择法,堆查找法和快速排序法。 选择法很简单,就是先遍历一遍找到最大的元素,然后再遍历一遍找第二
编程导航算法通关村第十四关 | 堆结构
堆的概念和特征 堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。堆有两种结构,一种称为大顶堆,一种称为小顶堆,如下图。 小顶堆:任意节点的值均小于等于它的左右孩子,并且最小的
编程导航算法通关村第十三关 | 数论问题
辗转相除法 辗转相除法又叫做欧几里得算法,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的。最大公约数(greatest common divisor,简写为gcd),是指几个
编程导航算法通关村第十三关 | 数字和数学高频面试题
数组实现加法专题 数组实现整数加法 . - 力扣(LeetCode) 这里的关键是A[0]什么时候出现进位的情况,我们知道此时一定是9,99,999...这样的结构才会出现加1之后再次进位,而进位之后
编程导航算法通关村第十三关 | 数字与数学基础
数字统计专题 符号统计 力扣(LeetCode) 只需要看有多少个负数,就能够判断最后乘积的符号了 阶乘零的个数 . - 力扣(LeetCode) 这个题如果硬算,一定会超时,其实我们可以统计有多少个
编程导航算法通关村第十二关 | 字符串冲刺
最长公共前缀 . - 力扣(LeetCode) 第一种的实现方法,竖着比较。纵向扫描时,从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不
编程导航算法通关村第十二关 | 字符串经典面试题
面试中,字符串相关的经典面试题:包括反转字符串、验证回文串、字符串中第一个唯一字符和判定是否互为字符重排
编程导航算法通关村第十二关 | 字符串基础
转换成小写字母 . - 力扣(LeetCode) 我们知道每个字母都是有确定的 ASCII的,因此我们可以根据 码表操作字符串即可。常见ASCII范围是:a-z:97-122 A-Z:65-90 0-
编程导航算法通关村第十一关 | 位运算实现压缩存储
用4KB内存寻找重复元素 题目要求:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。 分析:本身是一道海
编程导航算法通关村第十一关 | 位运算的高频算法题
位移的妙用 位1的个数 . - 力扣(LeetCode) 有两种思路,让1不断左移或者将原始数据不断右移。例如将原始数据右移就是: 很明显此时就可以判断出第二位是0,然后继续将原始数据右移就可以依次判
编程导航算法通关村第十一关 | 理解位运算
数字在计算机中的表示 机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1。比如,十进制中的数 +3 ,计算机字长为8位
编程导航算法通关村第十关 | 归并排序
归并原理 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干个比较小的数组,分成几个比较小的结构,然后是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分就是将问题分(divid
编程导航算法通关村第十关 | 数组中第K大的数字
数组第K大 . - 力扣(LeetCode) 看前面排序的序列:{26,53,48,15,13,48,32,15} 我们第一次选择了26为哨兵,进行一轮的排序过程为: 上面红框位置表示当前已经被赋值给
编程导航算法通关村第十关 | 快速排序
快速排序的基本过程 快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体来说,哨兵划分的流程如图所示。
编程导航算法通关村第九关 | 两道有挑战的问题
有序数组转换为二叉搜索树 . - 力扣(LeetCode) 理论上如果要构造二叉搜索树,可以以升序序列中的任一个元素作为根节点,以该元素左边的升序序列构建左子树,以该元素右边的升序序列构建右子树,这样
下一页