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

程序的灵魂
摘要:Node类 class Node { int val; Node left; Node right; public Node(int val) { this.val = val; } } 构建二叉树 // 构建二叉树 public static Node createBinaryTree(int[] 阅读全文
posted @ 2022-07-07 19:10 没有你哪有我 阅读(25) 评论(0) 推荐(1) 编辑
摘要:描述 给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。 二叉搜索树满足每个节点的左子树上的所有节点均严格小于当前节点且右子树上的所有节点均严格大于当前节点。 例: 图1 图2 数据范围:节点数量满足 1 \le n\le 10^4 \1≤n≤104 ,节点上的值满足 -2^{31} \le v 阅读全文
posted @ 2022-05-29 20:12 没有你哪有我 阅读(34) 评论(0) 推荐(0) 编辑
摘要:百度百科 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之 阅读全文
posted @ 2022-05-25 21:37 没有你哪有我 阅读(1046) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个 n×m 的方格矩阵,每个方格要么是空格(用 . 表示),要么是障碍物(用 * 表示)。 如果两个空格存在公共边,则两空格视为相邻。 我们称一个不可扩展的空格集合为连通分量,如果集合中的任意两个空格都能通过相邻空格的路径连接。 这其实是一个典型的众所周知的关于连通分量(Connec 阅读全文
posted @ 2022-05-15 14:46 没有你哪有我 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目描述 共有 n 名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号。确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i < n ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。 游戏遵循如下规则: 从第 1 阅读全文
posted @ 2022-05-04 22:15 没有你哪有我 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个模式串 S,以及一个模板串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串 P 在模式串 S 中多次作为子串出现。 求出模板串 P 在模式串 S 中所有出现的位置的起始下标。 输入格式 第一行输入整数 N,表示字符串 P 的长度。 第二行输入字符串 P 。 第三行输入 阅读全文
posted @ 2022-02-12 16:28 没有你哪有我 阅读(87) 评论(0) 推荐(0) 编辑
摘要:一、基础算法 1、快排 1 public static void quickSort(int l, int r, int[] arr) { 2 if (l >= r) { 3 return; 4 } 5 int base = arr[(r - l) / 2 + l]; 6 int i = l - 1 阅读全文
posted @ 2022-01-16 14:32 没有你哪有我 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数n ,表示数列的长度。 第二行包含n个整数,表示整个数列。 输出格式 阅读全文
posted @ 2022-01-16 11:19 没有你哪有我 阅读(113) 评论(0) 推荐(0) 编辑
摘要:数据结构操作 数组排序算法 阅读全文
posted @ 2021-08-19 15:21 没有你哪有我 阅读(71) 评论(0) 推荐(0) 编辑
摘要:前言 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩 阅读全文
posted @ 2021-05-05 11:25 没有你哪有我 阅读(88) 评论(0) 推荐(0) 编辑
摘要:介绍 这几天在打比赛时遇到了二维前缀和,看了一下深有体会,发一篇详解。首先,什么是前缀和?一个数列,我们要计算某个区间内的和,该怎么做呢?正所谓暴力出奇迹,这一个也可以,我们暴力枚举每一个区间内的数并且相加,可是这个是O(n)的时间复杂度,不要小看这个线性,可如果在DP里的话这相当于加了一次方,卡你 阅读全文
posted @ 2021-04-22 22:21 没有你哪有我 阅读(776) 评论(1) 推荐(0) 编辑
摘要:再次谈起什么是并查集? 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(Union-find Algorithm)定义了两个用于此数据结构的操作:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一 阅读全文
posted @ 2021-04-13 12:23 没有你哪有我 阅读(206) 评论(0) 推荐(0) 编辑
摘要:什么是最小生成树? 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。 MST性质: 假设 N = (V, {E})是一个连通网,U是顶点集V的一个非空子集 阅读全文
posted @ 2021-04-05 16:41 没有你哪有我 阅读(484) 评论(0) 推荐(0) 编辑
摘要:什么是二叉排序树? 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。 在算法设计中,往往需要有检索查找数据的操作,如果在数据量比较庞大的情况下用一般的数组或者链表之类的线 阅读全文
posted @ 2021-03-28 09:18 没有你哪有我 阅读(1428) 评论(0) 推荐(0) 编辑
摘要:什么是KMP算法? 1. 背景KMP算法一种改进的模式匹配算法,是D.E.Knuth、V.R.Pratt、J.H.Morris于1977年联合发表,KMP算法又称克努特-莫里斯-普拉特操作。它的改进在于:每当从某个起始位置开始一趟比较后,在匹配过程中出现失配,不回溯i,而是利用已经得到的部分匹配结果 阅读全文
posted @ 2021-03-21 23:04 没有你哪有我 阅读(170) 评论(0) 推荐(0) 编辑
摘要:什么是0-1背包问题? 对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1.我们设物品i的装入状态为xi,xi∈ (0,1),此问题称为0-1背包问题。 问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装 阅读全文
posted @ 2021-03-21 13:11 没有你哪有我 阅读(124) 评论(3) 推荐(0) 编辑
摘要:快速幂运算,提高算法效率的绝佳选择 我们首先来了解一下“取模”运算的运算法则:(具体的证明感兴趣的同学可以问度娘) (a + b) % p = (a % p + b % p) % p (1) (a - b) % p = (a % p - b % p ) % p (2) (a * b) % p = ( 阅读全文
posted @ 2021-02-21 09:31 没有你哪有我 阅读(71) 评论(0) 推荐(0) 编辑
摘要:介绍 约瑟夫问题(有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 打印所有人死的顺序 C语言代码实现: #include <stdio.h> #include <malloc.h> #include <stdlib.h> 阅读全文
posted @ 2021-02-17 10:00 没有你哪有我 阅读(140) 评论(0) 推荐(0) 编辑

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