08、算法与数据结构 - 实战:链表问题
快慢指针 四个类似的问题: 1、 输入链表头部,奇数长度返回中点,偶数长度返回上中点; 2、 输入链表头部,奇数长度返回中点,偶数长度返回下中点; 3、 输入链表头部,奇数长度返回中点前一个,偶数长度返回上中点前一个; 4、 输入链表头部,...
快慢指针 四个类似的问题: 1、 输入链表头部,奇数长度返回中点,偶数长度返回上中点; 2、 输入链表头部,奇数长度返回中点,偶数长度返回下中点; 3、 输入链表头部,奇数长度返回中点前一个,偶数长度返回上中点前一个; 4、 输入链表头部,...
前缀树 Trie 1、 根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构; 2、 每个节点都有一个paths数组,表示字符路径; 3、 每个节点都会记录有多少个字符串经过该节点,记为pass; 4、 每个节点都会记录有多...
公众号:“皇子谈技术”主理人
堆结构 一种以数组模拟二叉树的结构 分大顶堆和小顶堆 如果是大顶堆,则父节点比两个孩子节点大,但是孩子节点间不做比较 小顶堆则是父节点比两个孩子节点小 /** * 堆结构(大根堆) */ public class Heap01 { priv...
递归实现取数组最大值 1、 当前递归,求一个mid中间位置; 2、 最侧递归,获取左侧的max; 3、 右侧递归,获取右侧的max; 4、 两个max,pk一下,返回最大的max; base case:left == right,就返回ar...
数组实现栈 /** * 数组实现栈 */ public class Stack01 { private int[] arr; private int size; // 栈容量 private int index = -1; public S...
反转单链表 /** * 反转单链表 */ public class List01 { public static class Node { public int value; public Node next; public Node(in...
不使用额外变量,进行两个数的交换 异或运算: 1、 两个数做异或运算,等于两个数的二进制位做无进位相加; 2、 一个数自己跟自己异或,结果为0(N^N==0); 3、 任何数跟0异或,结果为自己本身(N^0==N); /** * 不使用额外...
普通二分查找 /** * 普通二分查找 */ public class BinarySearch01 { public static int search(int[] arr, int num) { if (arr == null || a...
一、数据结构 数据结构包括:线性结构 和 非线性结构。 1.1 线性结构 1、 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系; 2、 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构; 3、 顺序存储的线...
引入 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题。 例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费; 同时,展示重复的信息对于用户来说也并不是最好...