自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

跑马去追XX

记录日常所学

  • 博客(65)
  • 问答 (1)
  • 收藏
  • 关注

原创 leetcode移动零

Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements.Note that you must do this in-place without making a copy of the array.Example 1:Input: nums = [0,1,0,3,12]Output: [1,3,12,0,0]Examp

2024-02-26 15:41:22 467

原创 leetcode两数之和

当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。如果存在,我们需要找出它的索引。这样我们创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。

2024-01-24 18:17:06 516

转载 数据库并发操作问题这一篇就够了

当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。 指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。 例如:事务1读取某表中的数据A=20,事务2也读取A=20,事务1修改A=A-1,事务2

2022-12-05 22:47:06 810 1

原创 安徽工程大学计算机网络期末考试复习(研究生)

通信平面仍包含管理平面、控制平面和数据平面,SDN网络架构只是把系统的三个平面的功能进行了重新分配,传统网络控制平面是分布式的,分布在每个转发设备上,而SDN网络架构则是把分布式控制平面集中到一个SDN控制器内,实现集中控制,而管理平面和数据平面并没有太多什么变化。没错,就是SDN!基于SDN架构,如果标准化了控制器和转发器之间的接口,比如OpenFlow协议逐渐成熟,那么网络设备的白牌化将成为可能,比如专门的OpenFlow转发芯片供应商,控制器厂商等,这也正是所谓的系统从垂直集成开发走向水平集成。

2022-12-01 15:54:05 546

原创 程序员常用的10种算法-贪心算法

贪心算法

2022-06-12 16:06:50 357 3

原创 程序员常用10种算法-KMP 算法

如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有:KMP 算法介绍KMP 是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP 算法”,常用于在一个文本串 S 内查找一个模式串 P 的 出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris 三人于 1977 年联合发表,故取这 3 人的 姓氏命名此算法.KM

2022-06-11 16:22:37 232

原创 程序员常用10种算法-动态规划算法

思路分析和图解

2022-06-10 10:35:29 1644

原创 程序员常用 10 种算法-分治算法

分治法在每一层递归上都有三个步骤:汉诺塔的传说汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小 顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。假如每秒钟一次,共需多长时间呢?移完这些金片需要 5845.54 亿年以上,太阳系的预期寿命据说也就是数百亿年。真的过了 5845.54 亿年,地球上的一切生命,

2022-06-09 00:00:00 210

原创 程序员常用 10 种算法-二分查找算法(非递归)

数组 {1,3, 8, 10, 11, 67, 100}, 编程实现二分查找, 要求使用非递归的方式完成.

2022-06-08 00:00:00 226

原创 图及图的遍历

图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)。邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于 n 个顶点的图而言,矩阵是的 row和 col 表示的是 1…n个点。图的深度优先遍历介绍图遍历介绍所谓图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: (1)深度优先遍历 (2)广度优先遍历图的深度优先搜索(Depth

2022-06-07 00:00:00 158

转载 多路查找树

B树通过重新组织节点,降低树的高度,并且减少 i/o 读写次数来提升效率。将数列{16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20} 构建成 2-3 树,并保证数据插入的大小顺序。(演示一下构建 2-3 树的过程.)插入规则:除了 23 树,还有 234 树等,概念和 23 树类似,也是一种 B树。 如图:B-tree 树即 B 树,B 即 Balanced,平衡的意思。有人把 B-tree 翻译成 B-树,容易让人产生误解。会以为 B-树是一种树,而 B树

2022-06-06 00:00:00 120

原创 平衡二叉树(AVL 树)

应用案例-单旋转(右旋转)要求: 给你一个数列,创建出对应的平衡二叉树.数列 {10,12, 8, 9, 7, 6}思路分析(示意图)代码实现应用案例-双旋转前面的两个数列,进行单旋转(即一次旋转)就可以将非平衡二叉树转成平衡二叉树,但是在某些情况下,单旋转 不能完成平衡二叉树的转换。比如数列 int[] arr = { 10, 11, 7, 6, 8, 9 }; 运行原来的代码可以看到,并没有转成 AVL树.int[] arr = {2,1,6,5,7,3}; // 运行原来的代码可

2022-06-05 00:00:00 143

原创 二叉排序树

二叉排序树的相关操作,内含全部代码

2022-06-04 11:45:01 154

原创 答答租车控制台控制台练手

答答租车控制台car.javapackage Jack_Cui;/* * Project: Lease System * Comments: 汽车类,客车、货车、皮卡车的基类 * JDK version used: JDK1.8 * Author: Jack-Cui * Create Date: 2016-8-29 */public class Car { priv

2022-06-03 09:31:26 138

原创 压缩文件(哈夫曼编码)

package com.iflytek.huffmancode;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.util.Map;public

2022-04-05 10:56:53 985 1

原创 数据压缩解压(哈夫曼编码)

数据压缩解压(哈夫曼编码)基本介绍赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在 20%~90%之间赫夫曼码是可变字长编码(VLC)的一种。Huffman 于 1952 年提出一种编码方法,称之为最佳编码原理剖析通信领域中信息的处理方式 1-定长编码通信领域中信息的处理方式 2-变长编码通信领域中信息的处理方式

2022-04-03 20:58:44 3549 1

原创 赫夫曼树的介绍和构造

package com.iflytek.huffmantree;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class HuffmanTree { public static void main(String[] args) { int[] arr = {13, 7, 8, 3, 29, 6, 1}; Node root = cr.

2022-03-28 00:00:00 313

原创 斐波那契数列 非递归

#include <iostream>using namespace std;int feibo(int n){ if(n==1||n==2){ return 1; }else{ int p=1; int q=1; for (int i = 2; i < n; i++) { int tmp=p; p=q; q=tmp+p; }

2022-03-27 00:00:00 675 11

原创 顺序表的实现-----增删改查

#include<stdio.h>#include<stdlib.h>#define InitSize 10typedef struct { int *data; int MaxSize; int length;}SqList;void InitList(SqList &L);//初始化void IncreaseSize(SqList &L, int len);//动态扩展空间bool ListInsert(SqList &a

2022-03-26 00:00:00 322 21

原创 顺序表的实现-----动态分配

#include<stdio.h>#include<stdlib.h>//malloc、free函数的头文件#define InitSize 10typedef struct { int *data; int MaxSize; int length;}SqList;void InitList(SqList &L) { L.data = (int *)malloc(InitSize*sizeof(int)); L.length

2022-03-25 09:56:16 345 18

原创 C++引用类型

#include<stdio.h>//引用类型的不同void test(int &b) { b = 12; printf("test内部函数值%d\n", b);}int main() { int a = 11; printf("测试前%d\n", a); test(a); printf("测试后%d\n", a); return 0;}

2022-03-24 00:00:00 835 11

原创 Typedef关键字的使用

2022-03-23 00:00:00 549 9

原创 顺序表的实现-----静态分配

#include<stdio.h>#define MaxSize 10typedef struct { int data[MaxSize]; int length;}SqList;void InitList(SqList &L) { /* for (int i = 0; i < MaxSize; i++) { L.data[i] = 0; }*/ L.length = 0;}int main() { SqLi

2022-03-22 10:12:11 547 5

原创 树结构实际应用-大根堆小根堆之堆排序

树结构实际应用-大根堆小根堆之堆排序堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有 要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆大顶堆举例说明一般升序采用大顶堆,降序采用小顶堆堆排序堆排序基本思想堆排序的基本思想是

2022-03-21 10:54:29 610 13

原创 电脑系统的安装

电脑系统的安装此步骤假定已装好u盘系统拔掉U盘

2022-03-20 18:04:51 419

原创 前序后续中序线索化二叉树的遍历-完整版-内含全部代码实现

前序后续中序线索化二叉树的遍历完整版-内含全部代码实现package com.iflytek.tree;public class ThreadBinaryTreeDemo { public static void main(String[] args) { HeroNode2 root = new HeroNode2(1, "tom"); HeroNode2 node2 = new HeroNode2(3, "jack"); HeroNode2

2022-03-19 02:45:00 661 21

原创 中序遍历线索化二叉树-内含全部代码实现

中序遍历线索化二叉树说明:对前面的中序线索化的二叉树, 进行遍历分析:因为线索化后,各个结点指向有变化,因此原来的遍历方式不能使用,这时需要使用新的方式遍历线索化二叉树,各个节点可以通过线型方式遍历,因此无需使用递归方式,这样也提高了遍历的效率。 遍历的次序应当和中序遍历保持一致。代码实现package com.iflytek.tree;public class ThreadBinaryTreeDemo { public static void main(String[] ar

2022-03-18 12:29:57 1758 8

原创 MySql自动定时启动问题

MySql自动定时问题问题描述每晚00:00桌面会准时跳出一个黑框一闪而过,很快就自己关闭了,来不及截图保存,起初以为电脑中病毒了,然后各种杀毒软件,你懂的,但是之后的每晚还准时弹出,这就激起我都好奇心了,今晚熬个夜,等待猎物的出现,果然在我的手速下,将他控制住了,这就是他的真面目。如下图:百度一下,这是MySql的定时任务,检查自动更新,可以关掉,具体操作如下图...

2022-03-15 10:54:31 1047 8

原创 线索化二叉树-內含全部代码实现

线索化二叉树先看一个问题将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7(7个空余节点)问题分析:当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 }但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上.如果我们希望充分的利用 各个节点的左右指针, 让各个节点可以指向自己的前后节点,怎么办?解决方案-线索二叉树线索二叉树基本介绍n 个结点的二叉链表中含有 n+1 【公式 2n-(n-1)

2022-03-11 12:19:06 465 24

原创 顺序存储二叉树

顺序存储二叉树基本说明 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。要求:右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 2) 要求在遍历数组 arr 时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成结点的遍历顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第 n 个元素的左子节点为 2 * n + 1第 n 个元素的右子节点为 2 * n + 2第

2022-03-10 01:15:00 218 5

原创 二叉树的删除-内含全部代码

二叉树的删除package com.iflytek.tree;//先创建HeroNode 结点class HeroNode { private int no; private String name; private HeroNode left;//默认 null private HeroNode right;//默认 null public HeroNode(int no, String name) { this.no = no;

2022-03-09 10:27:55 539 2

原创 前序-中序-后续遍历查找

前序-中序-后续遍历查找package com.iflytek.tree;//先创建HeroNode 结点class HeroNode { private int no; private String name; private HeroNode left;//默认 null private HeroNode right;//默认 null public HeroNode(int no, String name) { this.no = n

2022-03-08 11:23:31 152 3

原创 二叉树的遍历-内含全部代码实现

二叉树的概念树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。二叉树的子节点分为左节点和右节点示意图如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树。如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边续,倒数第二 层的叶子节点在右边连续,我们称为完全二叉树二叉树遍历的说明使用前序,中序和后序对下面的二叉树进行遍历.前序遍历: 先输出父节点,再遍历左子树和右子树中序遍历: 先

2022-03-07 00:00:00 458 5

原创 树结构的基础部分

树结构的基础部分为什么需要树这种数据结构数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 画出操作示意图:链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历) 【示意图】 操作示意图:树存

2022-03-06 09:49:30 92 5

原创 哈希表-內含全部代码实现

哈希表哈希表的基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组 叫做散列表。一个简单的面试题*有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查 找到该员工的所有信息.要求:不使用数据库,速度越快越好=>哈希表(散列)添加时,保证按照 id

2022-03-05 09:12:22 197 2

原创 斐波那契(黄金分割法)查找算法

斐波那契(黄金分割法)查找算法斐波那契(黄金分割法)查找基本介绍:黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位 数字的近似值是 0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神 奇的数字,会带来意向不大的效果。斐波那契数列 {1, 1, 2, 3, 5, 8, 13, 21, 34, 55 } 发现斐波那契数列的两个相邻数 的比例,无限接近 黄金分割值 0.618斐波那契(黄金分割法)原理:斐波那契

2022-03-04 09:26:42 353 5

原创 插值查找算法

插值查找算法插值查找原理介绍: 插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid 处开始查找。将折半查找中的求mid 索引的公式 , low 表示左边索引 left, high 表示右边索引 right. key 就是前面我们讲的 findValint mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]) ;/插值索引/ 对应前面的代码公式: int mid = left + (right – le

2022-03-03 09:54:40 224

原创 查找算法—二分查找

二分查找算法二分查找:请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} ,输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。二分查找算法的思路二分查找的代码说明:增加了找到所有的满足条件的元素下标: 课后思考题: {1,8, 10, 89, 1000, 1000,1234} 当一个有序数组中,有多个相同的数值时,如何将所有的数值都查找到,比如这里的 1000.package com.iflytek.search;impor

2022-03-02 08:55:46 120 4

原创 查找算法—顺序查找

查找算法查找算法介绍在 java 中,我们常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。代码实现package com.iflytek.search;public class SeqSearch { public static void main(String[] args) {

2022-03-02 08:37:53 385

原创 常用排序算法总结和对比

常用排序算法总结和对比一张排序算法的比较图相关术语解释:稳定:如果 a 原本在 b 前面,而 a=b,排序之后 a 仍然在 b 的前面;不稳定:如果 a 原本在 b 的前面,而 a=b,排序之后 a 可能会出现在 b 的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度:一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。n: 数据规模 8) k: “桶”的个数In-place

2022-03-01 07:00:00 116

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除