摘要: 回溯法 回溯法,属于DFS,也是暴力遍历。对所有的可能结果进行组合。普通的DFS属于求解可达性的问题,这种问题执行到特定的位置,然后返回即可。BackTracking则用于求解排列组合的问题。 回溯求解时候,不会立刻返回,而是要继续求解,因此在程序实现种,需要对元素进行标记 在访问一个新元素进入递归 阅读全文
posted @ 2021-09-26 20:45 汪小川 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 单调栈 单调栈简介 单调栈本质就是栈,其元素保持单调。单调栈实际上就是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内的元素都保持有序(单调递增或单调递减) 从栈底到栈顶,依次递减的是单调递减栈。 从栈底到栈顶,依次递增的是单调递增栈。 构造单调栈,可以用于解决数组中元素右侧下一个更大(更小 阅读全文
posted @ 2021-09-22 16:00 汪小川 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 前缀树 基础知识 Trie树。又称之为单词查找树或者键树,是一种树形结构。应用于统计和排序大量的字符串。常被搜索引擎系统用于文本词频统计。它的优点:能够最大限度的减少无谓的字符串比较,查询效率比哈希表高。 核心思想是以空间换时间。利用记录字符串公共前缀来降低查询时间的开销。 3个基本性质 根节点不包 阅读全文
posted @ 2021-09-13 19:51 汪小川 阅读(632) 评论(0) 推荐(1) 编辑
摘要: 二叉树的遍历很重要,在面试中,如果涉及到二叉树的遍历,通常会要求使用非递归的方式 下面是三种遍历的非递归实现 前序遍历 public static List<Integer> preorderTraversal(TreeNode root) { List<Integer> ret = new Arr 阅读全文
posted @ 2021-09-13 17:22 汪小川 阅读(366) 评论(0) 推荐(0) 编辑
摘要: Hashmap 哈希表:由数组加链表组成。 Hashmap<keydatatype,valuedatatype> map=new Hashmap<>(); Hashset<Interger> set=new Hashset<>(); 1.hashmap的结构 数组和链表这两种数据结构,数组根据索引查 阅读全文
posted @ 2021-04-11 19:22 汪小川 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高(O(logN)的查找方法,前提是数据结构必须先排好序,可以在数据规模的对数时间复杂度内完成查找。但是,二分查找要求线性表具有有随机访问的特点(例如数组),也要求线性表能够根据中间元素的特点推测它两侧元素的性质,以达到缩减 阅读全文
posted @ 2021-04-09 21:24 汪小川 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 链表 链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。一个链表节点至少包含一个 数据域和一个指针域在Java中需要定义一个类来实现,如下: public class ListNode { 阅读全文
posted @ 2021-04-04 21:19 汪小川 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 数组与矩阵 数组与矩阵的基本知识: 1.数组:数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 首先,数组会利用索引来记录每个元素在数组中的位置,且在大多数编程语言中,索引是从0算起的。我们可以根据数组中的索引,快速访问数组中的元素。事实上,这里的索引其实 阅读全文
posted @ 2021-03-29 16:52 汪小川 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 计算机基础知识总结 计算机硬件与冯诺伊曼结构 核心:1. CPU(AMD yes!!!) 2.Memory(内存) 3.Motherboard(主板) 4.I/O设备 5.显卡 冯诺伊曼体系: ![冯诺伊曼体系结构]( ) 计算机软件 主要包含两类:系统软件和应用软件 系统软件:windows, l 阅读全文
posted @ 2021-03-09 16:08 汪小川 阅读(28) 评论(0) 推荐(0) 编辑