随笔分类 - 数据结构与算法
摘要:漫画:图的 “最短路径” 问题 1.当图为无权图时,可以用广度遍历算法bfs获得相隔层次最少的路径。 先加入一个顶点,再while循环,循环中先出一个,再判断是否出的该点是否访问过。若访问过,则continue。continue语句的作度用是跳过循环本中剩余的语句而强行执行下一次循环。 (一个疑问,
阅读全文
摘要:图可以用邻接矩阵(顶点和顶点矩阵)和邻接表(顶点的链表)两种形式的结构来存储。 还有逆邻接表,顶点依然是头结点,但后续存的是谁指向你的。还有十字链表。。。 漫画:什么是 “图”?(修订版) 图的遍历:DFS,BFS 搞搞清楚 漫画:深度优先遍历 和 广度优先遍历 DFS就是遍历头结点的邻节点们,假如
阅读全文
摘要:恢复内容开始 String 方法 下面是 String 类支持的方法,更多详细,参看 Java String API 文档: SN(序号)方法描述 1 char charAt(int index)返回指定索引处的 char 值。 2 int compareTo(Object o)把这个字符串和另一个
阅读全文
摘要:哈希表使用 O(N) 空间复杂度存储数据,并且以 O(1) 时间复杂度求解问题。 1.Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中。如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在(??有点不理解,还没碰到过这样的题。。。)例如对于只有小写字符的
阅读全文
摘要:快速选择 用于求解 Kth Element 问题,也就是第 K 个元素的问题。 可以使用快速排序的 partition() 分治进行实现。需要先打乱数组,否则最坏情况下时间复杂度为 O(N2)。 关于快速排序: https://blog.csdn.net/nrsc272420199/article/
阅读全文
摘要:层次遍历 使用 BFS 进行层次遍历。不需要使用两个队列来分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 BFS用队列和循环,没有用递归。 关于树的bfs和dfs看下面这篇文章,但是
阅读全文
摘要:递归 一棵树要么是空树,要么有两个指针,每个指针指向一棵树。树是一种递归结构,很多树的问题可以使用递归来处理。 1. 树的高度 104. Maximum Depth of Binary Tree (Easy) Leetcode / 力扣 传入的TteeNode root 结点有左结点left右结点r
阅读全文
摘要:双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 1. 有序数组的 Two Sum 167. Two Sum II - Input array is sorted (Easy) Leetcode / 力扣 Input: numbers={2, 7, 11, 15}, target=
阅读全文
摘要:1. 把数组中的 0 移到末尾 283. Move Zeroes (Easy) Leetcode / 力扣 For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 1
阅读全文
摘要:按照CS-Notes仓库的leetCode 题解来刷题 https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E9%93%BE%E8%A1%A8.md 1. 用栈实现队列
阅读全文
摘要:update: 首先链表题,说到双指针那就应该是ListNode类型的,即不是考虑链链只需考虑节点。 然后就是一定会有head赋值发生。ListNode a =head之类的 还有就是节点判空是需要考虑的 一般需要while循环,while后面括号里是循环条件,一般是某位移节点不为空或某节点不等于某
阅读全文

浙公网安备 33010602011771号