首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
算法与数据结构
Spirited_Away
创建于2022-04-24
订阅专栏
前几天,字节面试自己直接自闭了。现在还有些时间,就想着赶紧补补算法。给自己秋招增长资本。这专栏主要是学习慕课网Liuyubobobo老师的算法体系课。代码都是使用java编写。
等 1 人订阅
共14篇文章
创建于2022-04-24
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
牛客面经每日一总结(算法部分)
快速排序 原理 通过递归实现。每次都设置标定点之前的所有元素和之后的所有元素第一个元素的正确位置。 假设[l, r]区间的第一个元素为标定元素。 让其前面的元素都小于标定元素,后面的元素都大于标定元素
二分查找
二分查找的前提 使用递归实现二分查找 使用非递归实现二分查找 二分查找法的变种 查找大于target的最小值 当未查找到这样的元素,那么将返回数组长度。 当中间值大于等于目标值,那么查询返回下一边界需
其他排序算法(冒泡排序,希尔排序)
冒泡排序 冒泡排序的基本思想 一轮循环一定会将最大的元素排序到指定的位置 每次都比较相邻元素。 算法实现 算法优化 当对于有序数组时,我们可以提前终止比较 因为在比较第一个元素的时候,就已经可以确定该
数据结构之集合和映射
集合set 集合的特点 集合中的元素都是不重复的,所以,我们就可以通过二分搜索树来设计集合这种数据结构。 集合的实现 通过二分搜索树实现set 二分搜索树相关实现请看这里 通过链表实现set 自定义的
数据结构之树(二分搜索树)
二叉树 二分搜索树 存储的元素都必须具有可比较性。 插入元素 不考虑重复元素的插入 这个是比较容易理解的递归 下面是更简洁的递归算法,不需要判断根节点是否为空。注意,这里返回的node是每次遍历的根节
高级排序算法(快速排序)
这篇文章,你可以学习 单路快速排序 随机化 双路快速排序 三路快速排序 快速排序的过程 快速排序解读 partition的实现 方式一:创建两个额外的空间 方式二:原地partition 假设[l,
高级排序算法(归并排序)
归并排序解读 归并过程 就是将两个有序数组合并为一个有序数组。 每次都比较两个数组中第一个元素的大小,然后取出最小的元素。直到两个数组没有元素。 实现的时候需要注意:我们需要复制一份数组,用复制的数组
数据结构之递归
递归的本质 实现数组递归求和 “解读”递归调用数组求和 使用递归解决LeetCode-203 “解读”递归调用 链表反转 LeetCode-206 直接反转 首先明确题意。他只是让每个节点的next指
数据结构之链表
动态数据结构 链表的特征 数组和链表的对比 链表的设计 表头添加元素 在中间添加元素 关键是找到待添加节点的前一个节点。 删除元素 这里最主要的是获取当前节点的前一个节点和当前节点。 获取当前节点 获
数据结构之队列
队列特征 队列的实现 依旧是基于我们自己封装的Array。 复杂度分析 由于上面出队的时间复杂度为o(n),结合队列的特征,我们可以使用循环队列来解决这个问题。 由于,我们出队时,后面的元素顺序是不会
数据结构之栈
栈的特征 栈的应用 系统栈 括号匹配问题。LeetCode-20。 栈的实现 复杂度分析......
数据结构之数组
什么是数据结构 二次封装java中的数组 索引没有语意,如何表示没有元素。 如何添加元素?如何删除元素? 数据结构实现 数据结构复杂度分析 基本方法 扩容方法 这里会引起不断地扩容和降容。出现复杂度震
基础的排序算法(选择,插入)
选择排序法 每轮循环都找出最小的那一个。 可以进行原地排序。 内存循环找出最小的那个。 外层循环控制初始查找的值。 算法实现 找出循环不变量。arr[0...i)是有序的,arr[i...n)是无序的
线性查找法
什么是算法 一系列解决问题的,清晰的,可执行的计算机指令。 有限性 确定性: 不会产生二义性。不是说确定的输入就有确定的输出。 可行性。 输入(广义上的) 输出(广义上的) 线性查找法 根据上面的案列