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

摘要:一.数字问题 对于 LeetCode 上有数量不少的数字题,然而很多数字题的解法并不通用,我们也很难在几道题里把所有的套路讲清楚,因此我们只选择了几道经典或是典 型的题目,供大家参考。 这个题其实主要是排序,可以使用快速排序,使用内置函数感觉跟算赖一样。但是先理解思想,在快速排序文章中再详细研究排序 阅读全文
posted @ 2022-01-29 23:00 小猴子_X 阅读(77) 评论(0) 推荐(0) 编辑
摘要:哈希表,又称散列表,使用 O(n) 空间复杂度存储数据,通过哈希函数映射位置,从而实现近似 O(1) 时间复杂度的插入、查找、删除等操作。 哈希表的作用无非就两种:去重,存放信息 一.去重 "去重"是哈希表的一个重要的作用,但是可惜它的空间复杂度是O(n),如果有更好的办法就不用哈希表去重 除了哈希 阅读全文
posted @ 2022-01-21 11:41 小猴子_X 阅读(130) 评论(0) 推荐(0) 编辑
摘要:除了"先进后出"之外,还有很多玩法,你知道嘛? 这里插入一个队列的类似题目,用于区别 恭喜你,栈的基本使用已经会了,那么就看点高级玩法吧 寄语:努力最大的意义,就是让自己随时有能力跳出自己厌恶的圈子 阅读全文
posted @ 2022-01-21 11:26 小猴子_X 阅读(31) 评论(0) 推荐(0) 编辑
摘要:本文章主要总结一些leetcode中一些没有规律的题 摩尔投票法还有待研究 该题本质就是约瑟夫环的问题,因为使用循环链表太繁琐,所以可以使用arrayList模拟循环链表。 寄语:欲成大树,莫与草争;将军有剑,不斩苍蝇 阅读全文
posted @ 2022-01-21 00:52 小猴子_X 阅读(53) 评论(0) 推荐(0) 编辑
摘要:求最优子问题,动态规划和其它遍历算法(如深/广度优先搜索)都是将原问题拆成多个子问题然后求解。他们之间最本质的区别是,动态规划保存子问题的解(使用dp[]),避免重复计算。 动态规划的题型丰富多样,没有规律可循。但是它们的思想是一样的,这里给出作者总结的做题四个步骤,适用于所有动态规划 确认状态:开 阅读全文
posted @ 2022-01-20 17:54 小猴子_X 阅读(90) 评论(0) 推荐(0) 编辑
摘要:树作为(单)链表的升级版,我们通常接触的树都是二叉树(binary tree),即每个节点最多有两个子节点; 还有一种特殊的树:搜索二叉树,它是按照左小右大的顺序存放元素。 遍历树的时候可能会涉及深度优先搜索和广度优先搜索。不会的小伙伴可以查看我的"一切皆可搜索"。遍历树一般使用递归。 一.树的递归 阅读全文
posted @ 2022-01-17 23:47 小猴子_X 阅读(51) 评论(0) 推荐(0) 编辑
摘要:链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一个节点 的指针,因此很多链表问题可以用递归和while迭代来处理。 链表可以实现分散存储,不同于数组,链表并不能直接获取任意节点的值, 必须要通过指针找到该节点后才能获取其值。 说白了,玩链表本质就是玩指针。下面列出常见的链表算法 阅读全文
posted @ 2022-01-17 13:11 小猴子_X 阅读(96) 评论(0) 推荐(0) 编辑
摘要:双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 常见的双指针有三种。 左右指针:两个指针指向同一数组,但是遍历方向相反,常用作搜索排序数组的两个符合条件的数,以及其他特殊情况。 快慢指针:两个指针指向同一数组,遍历方向相同,fast指针快,slow慢。然后它俩同时向前移动,初始的 阅读全文
posted @ 2022-01-17 00:41 小猴子_X 阅读(117) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示