首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
编程导航算法通关村
空白无上
创建于2023-11-26
订阅专栏
本专栏记录学习算法的经验文章
等 1 人订阅
共45篇文章
创建于2023-11-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
编程导航算法通关村第九关 | 二分查找和搜索树高频问题
基于二分查找的拓展问题 山脉数组的顶峰索引 . - 力扣(LeetCode) 最简单的方式是对数组进行一次遍历。 当我们遍历到下标i时,如果有arr[i-1]<arr[i]>arr[i+1],那么i就
编程导航算法通过村第九关 | 二分查找
二分查找与分治 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接
编程导航算法通关村第八关 | 寻找祖先问题
最近公共祖先问题 . - 力扣(LeetCode) 若 root是 p, q 的 最近公共祖先 ,则只可能为以下情况之一: (1)p和 q 在 root 的子树中,且分列 root 的 异侧(即分别在
编程导航算法通关村第八关 | 二叉树的高度和深度问题
最大深度问题 . - 力扣(LeetCode) 用代码表示就是: int depth = 1 + max(leftDepth, rightDepth); 而对于3,则是左右子树深度最大的那个然后再+1
编程导航算法通关村第八关 | 二叉树经典算法
二叉树中的双指针 所谓的双指针就是定义了两个变量,在二叉树中有时候也需要至少定义两个变量才能解决问题,这两个指针可能针对一棵树,也可能针对两棵树,我们姑且也称之为“双指针”吧。这些问题一般是与对称、反
编程导航算法通关村第七关 | 迭代实现二叉树遍历
有时候面试官要求不使用递归实现三种遍历。 递归就是每次执行方法调用都会先把当前的局部变量、参数值和返回地址等压入栈中,后面在递归返回的时候,从栈顶弹出上一层的各项参数继续执行,这就是递归为什么可以自动
编程导航算法通关村第七关 | 理解二叉树的遍历
深入理解前中后序遍历 我们再从二叉树的角度看递归,每次遇到递归,都按照前面说的四步来写,可以更好地写出正确的递归算法。通过二叉树可以非常方便的理解递归,递归只处理当前这一层和下一层之间的关系,并不关心
编程导航算法通关村第七关 | 理解递归
递归的特征 如果看递归代码的结构,就像下面这个样子,前面的每一层都去一模一样地调下一层,不同的只是输入和输出的参数。 当然这个过程不能一直持续下去,一定要在满足某个要求之后返回结果的,否则的话,就会抛
编程导航算法通关村第六关 | 二叉树的层序遍历
层序遍历简介 广度优先在面试里出现的频率非常高,整体属于简单题,但是很多人面试遇到时就直接放弃了,实在可惜。我们本章就集中研究一下到底难在哪里。 广度优先又叫层次遍历,基本过程如下: 该过程不复杂,如
编程导航算法通关村第六关 | 理解树的结构
树的常见概念 树是一个有n个有限节点组成一个具有层次关系的集合,每个节点有0个或者多个子节点,没有父节点的节点称为根节点,也就是说除了根节点以外每个节点都有父节点,并且有且只有一个。树的种类比较多,我
编程导航算法通关村第五关 | LRU的设计与实现
LRU的含义 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 关于什么是LRU,简单来说就是 当内存空间满了,不得不淘汰某些数据时(通常是容量已满),选择最久未被使用的数据进行淘汰。 这
编程导航算法通关村第五关 | Hash和队列的经典算法
用栈实现队列 栈的特点是后进先出,队的特点是先进先出。两个栈将底部拼接到一起就能实现队列的效果, 通过队列也能实现栈的功能 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 这个题的思路是
编程导航算法通关村第五关 | Hash和队列基础
Hash基础 Hash的概念和基本特征 哈希(Hash)也称为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,这个输出值就是散列值。 很多人可能想不明白,这里的映射到底是啥意思,为啥访
编程导航算法通过村第四关 | 表达式问题
计算器问题 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解决运算器问题,最好的工具就是栈。由于乘除优先于加减计算,因此不妨考虑先进行所有乘除运算,并将这些乘除运算后的整数值放回原表达
编程导航算法通关村第四关 | 栈的经典算法
括号匹配问题 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 我们可以用哈希表将所有符号先存储,左半边做key,右半边做value。遍历字符串的时候,遇到左半边符号就入栈,遇到右半边符号
编程导航算法通关村第四关 | 手写栈
栈基础知识 栈的特征 栈和队列是比较特殊的线性表,又称之为访问受限的线性表。栈是很多表达式、符号等运算的基础,也是递归的底层实现。理论上递归能做的题目栈都可以,只是有些问题用栈会非常复杂。 栈底层实现
编程导航算法通过村第三关 | 再论双指针
数组中出现次数超过一半的数字 剑指offer_在线编程_牛客网 使用Hash 我们先创建一个HashMap的key是元素的值,value是已经出现的次数,然后遍历数组来统计所有元素出现的次数。最后再次
编程导航算法通关村第三关 | 数组双指针
双指针 这里介绍一种简单但非常有效的方式——双指针。所谓的双指针其实就是两个变量,不一定真的是指针。双指针思想简单好用,在处理数组、字符串等场景下很常见。看个例子,从下面序列中删除重复元素[1,2,2
编程导航算法通关村第三关 | 数组基础操作
线性表基础 我们先搞清楚几个基本概念,在很多地方会看到线性结构、线性表这样的表述,那什么是线性结构?与数组、链表等有什么关系?常见的线性结构又有哪些呢? 所谓线性表就是具有相同特征数据元素的一个有限序
编程导航算法通关村第二关 | K个一组反转
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 头插法 将其分成已经反转、正在反转和未反转三个部分。为了方便循环,我们可以先遍历一遍数组,统计一下元素数量len,确定要分几组n=len/
下一页