数据结构与算法
文章平均质量分 78
学习数据结构与算法时的一些笔记
timedecdec
遇难则弃,世无难事
展开
-
Python 学习笔记 3:数据结构(列表、字典)
列表的基本操作、函数和方法,形式转化;字典的函数与方法原创 2020-07-27 22:07:51 · 279 阅读 · 0 评论 -
360 技术岗秋招笔试原题(2022届)
360 笔试城市最小面积题目描述有一个城市需要修建,给你N个民居的坐标X,Y,问把这么多民居全都包进城市的话,城市所需最小面积是多少(注意,城市为平行于坐标轴的正方形)输入描述:第一行为 N,表示民居数目(2≤N≤1000)输出描述:城市所需最小面积输入例子1:20 02 2输出例子1:4输入例子2:20 00 3输出例子2:9参考代码public class Main { public static void main(String[] args) {原创 2021-08-30 14:17:28 · 4952 阅读 · 3 评论 -
B树和B+树
B 树 和 B+ 树原创 2021-05-22 15:24:02 · 559 阅读 · 1 评论 -
Java String 类 —— 基本算法题
模拟一个 trim 方法,去除字符串两端的空格。将一个字符串进行反转。将字符串中指定部分进行反转。比如将“ab`cdef`g”反转为”ab`fedc`g”获取一个字符串在另一个字符串中出现的次数。获取两个字符串中最大相同子串。对字符串中字符进行自然顺序排序。"abcwerthelloyuiodef"转载 2021-05-10 13:57:20 · 221 阅读 · 0 评论 -
Leetcode 做题笔记·一 —— 无重复字符的最长字符串
无重复字符的最长字符串题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须转载 2021-04-23 10:07:06 · 133 阅读 · 0 评论 -
递归与迭代分析 —— 以 Leetcode 例题(对称二叉树)为例
递归 Recursion递归的应用递归与循环迭代迭代的应用迭代、循环与递归Java 代码比较计算阶乘、对称二叉树原创 2021-04-21 09:01:19 · 422 阅读 · 0 评论 -
数据结构与算法·一 —— 概述
数据结构与算法笔记汇总数据结构与算法的关系与重要性学好数据结构可以编写出更加漂亮,更加有效率的代码线性数据结构与非线性数据结构原创 2021-04-19 10:17:35 · 98 阅读 · 0 评论 -
数据结构与算法·五 —— 递归(理论、迷宫问题、八皇后问题)
递归递归的应用(条件、形式、适合场景)递归的调用机制迷宫问题(示例代码)八皇后问题(示例代码)原创 2021-04-18 16:05:31 · 234 阅读 · 0 评论 -
数据结构与算法·四 —— 栈
Java栈栈的应用场景数组模拟栈的分析与代码实现栈实现综合计算器的分析与代码实现对于一位数的运算的代码实现对于多位数的运算的代码实现前缀、中缀、后缀表达式逆波兰表达式计算器代码实现中缀转后缀表达式代码实现完整版的逆波兰计算器,功能包括支持 `+ - * / ( )` 多位数,支持小数,兼容处理, 过滤任何空白字符,包括空格、制表符、换页符原创 2021-04-16 08:37:32 · 1323 阅读 · 0 评论 -
数据结构与算法·三 —— 链表(单链表、双向链表和环形链表)
单链表定义,相关操作以及代码实现(JAVA)双向链表定义,相关操作以及代码实现(JAVA)单向环形链表定义,相关操作以及代码实现(JAVA)Josephu 问题(约瑟夫问题)原创 2021-04-15 09:27:12 · 184 阅读 · 0 评论 -
数据结构与算法·二 —— 稀疏数组和队列
稀疏数组二维数组压缩为稀疏数组稀疏数组恢复为二维数组队列数组模拟队列数组模拟循环队列代码原创 2021-04-12 08:56:08 · 235 阅读 · 0 评论 -
字符串匹配之超详细最直白讲解 KMP 算法(Python 和 Java)
KMP算法Knuth-Morris-Pratt 字符串查找算法,简称KMP算法,通常用于在一个字符串 S 中查找一个匹配串 P 的出现位置和出现次数暴力解法解决子串匹配的暴力算法很容易,子串的首部和字符串的第 i 个对齐,开始匹配,直到匹配成功或者匹配失败;如果匹配失败,则子串的首部需要和字符串的第 i+1 个对齐,并重新开始匹配KMP算法为了充分利用已经匹配的字符串,可以使用两个指针,一个用于字符串 S——:i,一个用于匹配串 P——:j当匹配失败时,指针 i 回到匹配失败的地方,重新开始匹配原创 2020-09-03 17:11:59 · 760 阅读 · 0 评论 -
分治算法学习笔记——二分查找、全排列、归并排序、快速排序、汉诺塔(Python and Java)
分治算法分治,“分而治之”,即把一个复杂的问题分成两个或者更多的相同的或者相似的子问题,再把子问题分成更小的子问题,直到最后的子问题可以简单的求解,原问题的解就是子问题解的合并适用问题:1、该问题的规模缩小的一定程度可以比较简单地解决2、该问题可以分解为若干规模较小的相同问题3、利用该问题分解出的子问题的解可以合并为该问题的解4、该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题案例之二分查找二分查找是典型的分治算法的应用,将原有的有序数列划分为左右两个子序列,然后再对两原创 2020-09-01 14:59:08 · 1077 阅读 · 0 评论 -
动态规划 之 背包问题 和 记忆功能 (Python and Java)
背包问题问题:给定 n 个重量为 w1, w2, …, wn,价值为 v1, v2, …, vn 的物品和一个承重为 W 的背包,求这些物品中最有价值的一个子集,并且装到背包中。动态规划:为了设计一个动态规划算法,需要分解问题,用部分物品组成的子问题的解来表示为背包问题的解:首先,考虑一个由前 i 个物品(1 ≤ i ≤ n)定义的子问题,物品的重量分别为 w1, w2, …, wi,价值分别为 v1, v2, …, vi,背包的承重为 j(1 ≤ j ≤ W);设 F(i, j) 是原创 2020-08-14 16:54:56 · 2278 阅读 · 0 评论 -
十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)
排序算法的稳定性内部排序冒泡排序快速排序选择排序堆排序插入排序希尔排序归并排序计数排序桶排序PythonJava外部排序失败树置换-选择排序最佳归并树原创 2020-09-07 19:34:15 · 624 阅读 · 0 评论 -
最长增长子序列之动态规划解法与二分查找解法(Python code)
问题描述最长递增子序列(Longest Increasing Subsequence)给定一个无序的整数数组,找到其中最长上升子序列的长度对于多种最长上升子序列的组合,输出对应长度即可例如:input:[10, 9, 2, 5, 3, 7, 101, 18, 198, 192]output:5# [2, 3, 7, 101, 198]子串一定是连续的,但是子序列不一定是连续的动态规划分析定义 dp[i] 表示以数组 nums[i] 这个数结尾的最长的递增子序列的长度以上述问题为例原创 2020-09-06 14:47:55 · 521 阅读 · 0 评论 -
动态规划之挖金矿问题(Python and Java)
动态规划动态规划与 分治策略 很类似,都是将一个原问题分解为若干规模较小的子问题,递归的解决这些子问题,然后合并子问题的解得到原问题的解两者区别在于,分治策略解决的问题中,各个子问题通常是相互独立的,但是动态规划中的各个子问题通常是有重叠的,当针对一个子问题的解求出后,可以将其记忆化储存之前有讲过 动态规划之背包问题 ,这里是另一个比较经典的问题——挖金矿挖金矿问题与分析5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同;参与挖矿的工人总数是10人;每座金矿要么全挖,要么不挖,不能派一半原创 2020-09-05 22:02:48 · 1650 阅读 · 0 评论 -
看《算法图解》笔记 之 一
二分查找是一种简单的算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null 对于简单查找的算法速度是线性时间,而二分查找是对数时间,算法速度要快很多,用书中的原图表示,即为仅当列表是有序的时候,二分查找才有用 将一系列元素存储在一系列相邻的数组中,第一个的位置编号为 #0,第二个的位置编号为 ...原创 2020-03-09 13:08:06 · 191 阅读 · 0 评论 -
算法学习笔记(一)——贪心算法
贪心算法:在对问题求解时,总是做出在当前看来是最好的选择,即不从整体最优上考虑问题,而是从局部做出最优解因此,贪心算法不能够对所有问题得到最优解,选择的贪心策略必须具备无后效性,即某个状态之后的过程不会影响到以前的状态,而只与当前的状态有关 基本思路:1、建立数学模型描述问题; 2、把求解的问题分成若干子问题...原创 2020-03-08 17:34:02 · 308 阅读 · 0 评论 -
算法入门之时间复杂度和空间复杂度
算法时间复杂度空间复杂度大O表示法原创 2020-08-03 22:07:40 · 359 阅读 · 0 评论