自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 红黑树的插入与删除 基于JDK15 源码

这里是做了一个简单封装 没有设置键值对 只设置了一个整形的值 方便比较**具体情况都在注解里面分析了 **为了描述方便 注解里面的黑高 指的是左右子树最大的黑高插入最终只会有两种解决情况 叔叔是红 , 或者叔叔是黑。虽然叔叔是黑可以分为两种,但其中一种可以通过旋转变成另外一种,进行处理也是转化为一种情况处理。删除最终只会有一种解决情况,如果兄弟是红,直接旋转父亲 父亲的一个孩子会变成兄弟的孩子之一 , 但都是黑色。所以说更新之后,新兄弟也就成了黑色。所以说最终只会有一种情况 兄弟是黑。兄弟是黑:

2021-02-25 17:23:28 140 2

原创 Leetcode 802. 找到最终的安全状态 DFS与构建反向图进行拓扑排序

找到最终的安全状态在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。现在, 如果我们最后能走到终点,那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K, 无论选择从哪里开始行走, 我们走了不到 K 步后必能停止在一个终点。哪些节点最终是安全的? 结果返回一个有序的数组。该有向图有 N 个节点,标签为 0, 1, …, N-1, 其中 N 是 graph 的节点数. 图以以下的形式给出: grap.

2021-01-13 19:52:02 112

原创 Leetcode 1202. 交换字符串中的元素 最小堆与并查集

给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。你可以 任意多次交换 在 pairs 中任意一对索引处的字符。返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。示例 1:输入:s = “dcab”, pairs = [[0,3],[1,2]]输出:“bacd”解释:交换 s[0] 和 s[3], s = “bcad”交换 s[1] 和 s[2], s = “bacd”示例 2

2021-01-12 00:28:32 191 1

原创 leetcode399 除法求值 并查集与DFS Java与Python AC代码

**给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。返回 所有问题的答案 。如果存在某个无法确定的答案,则用

2021-01-08 09:49:09 141 4

原创 堆排序C语言实现以及堆基本操作python实现

堆排序堆排序的基本思想:对于一组待排序数据,首先按堆的定义建立初始堆(大根堆或小根堆);取出堆顶元素(最大或最小),将剩余的元素继续调整成新堆,就得到次大或次小元素;反复执行 1、2 ,直到全部元素排序成顺序或逆序,堆排序结束#include<stdio.h>// 交换void swap(int arr[], int i, int j) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp;}// 调整堆结构void

2020-12-19 11:23:15 242 3

原创 PAT (Basic Level) Practice 1035 插入与归并 (25分) Python非递归实现(测试点2有坑)

1035 插入与归并插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?Input103 1 2 8 7 5 9 4 6 01 2 3 7 8 5 9 4

2020-12-04 17:25:17 204 4

原创 Python代码块缓存机制和非代码块缓存机制以及强制驻留

代码块的定义Python程序是由代码块构造的。代码块是作为一个单元执行的一段Python程序文本。也就是说一个类,一个函数,一个脚本文件都是一个代码块,此外,当你以交互式的方式输入的时候,一行就是一个代码块。这是在ipython解释下以交互式方式输入,那么这个时候每一行就是一个代码块。如果是在类似pycharm环境运行,那么整个脚本文件都是一个代码块。前提是没有函数或者类。代码块的缓存机制如果在同一个代码块内,会存在有一个缓存机制。同一个代码块内,对对象进行初始化的时候,python

2020-06-12 17:38:12 832

原创 详解BM算法以及其改进KMP算法原理与在python中的实现

在介绍KMP算法之前,我们先来了解另外一种算法,BM算法。其实不论是KMP算法,还是BM算法都是字符串的模式匹配算法,那么什么是模式匹配呢?在严老师的书里是这样定义的:子串的定位操作通常被称为串的模式匹配。其实就是给定两个字符串,一个被当成主串,然后在主串中寻找另一个字符串的过程。而这个过程也被称为串的模式匹配。同时我们要寻找的这个字符串被称为子串或者模式串。pattern_str = 'ababcabcacbab'match_str = 'abcac'# 我在pattern_str中寻找

2020-06-06 21:51:30 1677 1

原创 python如何输出菱形与空心菱形详解与巧妙地使用center方法

首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列我们设菱形上半部分的总行数为rows,当前输出行数为row当row1时候,A只有1个,星号字符一共有6个,A左右分别3个;当row2时候,A有3个,星号字符一共有4个,A左右分别2个;当row==3的时候,A有5个,星号字符一共有2个,A左右分别1个;由此可以总结一个规律,在菱形的上半部分,随着row的增加,A的变化依次为 1 ;3 ;5

2020-06-04 22:24:42 2909

空空如也

空空如也

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

TA关注的人

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