随笔分类 -  数据结构与算法

排序算法
摘要:对排序算法做一个总结吧。先提交,回头再补吧 分类 比较类: 插入法: 插入排序 遍历未排序的列,将遍历到的每个元素插入到有序序列的适当位置。 希尔排序。 先将待排序的数组分成若干个子数组排序 选择法:包括选择排序和堆排序 选择排序 选择第 i 小的元素与第 i- 1 的位置交换 交换法:包括冒泡排序
77
0
0
递归算法
摘要:什么是递归 递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。 如上图所示,我们需要关心的主要是以下三点 整个递归的终止条件。 一级递归需要做什么? 应该返回给上一级的返回值是什么? 因此,也就有了我们解递归题的三部曲: 1. 找整个递归的终止
102
0
0
二分查找
摘要:对于有顺序的数组的查询操作,首先想到二分 二分查找分三种情况: 寻找一个数(基本的二分搜索) [1, 2, 2, 2, 3, 4, 5, 6, 7] 查找元素为3 返回 4 寻找左侧边界的二分搜索 [1, 2, 2, 2, 3, 4, 5, 6, 7] 查找元素为2 返回: 1(第一个2的索引) 寻
110
0
0
剑指offer刷题(算法类_2)
摘要:排序 035-数组中的逆序对(归并排序) 题目描述 题解 代码 复杂度 050 数组中重复的数字 题目描述 在一个长度为 n 的数组nums里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1
325
0
0
剑指offer刷题(算法类_1)
摘要:斐波那契数列 007-斐波拉契数列 题目描述 题解 代码 复杂度 008-跳台阶 题目描述 题解 代码 复杂度 009-变态跳台阶 题目描述 题解 代码 复杂度 010-矩形覆盖 题目描述 题解 代码 复杂度 搜索算法 001-二维数组查找 题目描述 题解 代码 复杂度 006-旋转数组的最小数字(
144
1
0
剑指offer刷题(栈、堆、 队列、 图)
摘要:Stack & Queue 005-用两个栈实现队列 题目描述 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 push 和 pop ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 题解 用两个栈来实现队列(先进先出)的
229
1
0
剑指offer(链表)
摘要:03 从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 示例1: 输入 {67,0,24,58} 返回值 [58,24,0,67] 题解: 利用栈先入后出的特性 代码: import java.util.ArrayList; import java.util
128
0
0
剑指offer刷题(Tree)
摘要:JZ26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B: 4 / 1 返回 true,因为 B 与 A 的一个子树拥有
221
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起