
数据结构和算法
文章平均质量分 66
zxfBdd
这个作者很懒,什么都没留下…
展开
-
布隆过滤器和布谷鸟过滤器详解
布隆过滤器和布谷鸟过滤器详解转载 2024-03-12 15:25:06 · 502 阅读 · 0 评论 -
LeetCode 239. 滑动窗口最大值【c++/java详细题解】
LeetCode 239. 滑动窗口最大值【c++/java详细题解】转载 2023-03-01 20:50:27 · 312 阅读 · 0 评论 -
PriorityQueue用法与介绍
PriorityQueue用法与介绍转载 2023-02-28 22:56:07 · 1483 阅读 · 1 评论 -
[LeetCode]98. 验证二叉搜索树 (java实现)递归 dfs
[LeetCode]98. 验证二叉搜索树 (java实现)递归 dfs转载 2023-02-27 23:57:03 · 163 阅读 · 0 评论 -
java实现 leetcode98.验证二叉搜索树,这些坑你就不要再踩了
java实现 leetcode98.验证二叉搜索树,这些坑你就不要再踩了转载 2023-02-27 23:56:57 · 117 阅读 · 0 评论 -
Leetcode - 98 验证二叉搜索树
Leetcode - 98 验证二叉搜索树转载 2023-02-27 23:55:22 · 83 阅读 · 0 评论 -
【LeetCode-98】
【LeetCode-98】转载 2023-02-27 23:53:39 · 77 阅读 · 0 评论 -
【无标题】
LeetCode第98题解析转载 2023-02-27 23:49:21 · 59 阅读 · 0 评论 -
【数据结构与算法】寻找无序数组中第K大的数
【数据结构与算法】寻找无序数组中第K大的数转载 2023-02-15 00:36:01 · 1500 阅读 · 0 评论 -
无序数组中找第K大的数_落花逐流水的博客_无序数组找k大
无序数组中找第K大的数_落花逐流水的博客_无序数组找k大转载 2023-02-15 00:33:17 · 502 阅读 · 0 评论 -
寻找无序数组中第k大数
寻找无序数组中第k大数转载 2023-02-15 00:32:46 · 92 阅读 · 0 评论 -
无序数组找第K大的数
无序数组找第K大的数转载 2023-02-15 00:31:32 · 288 阅读 · 0 评论 -
Flink的重启策略
Flink的重启策略转载 2023-02-11 13:59:47 · 1378 阅读 · 0 评论 -
LeetCode 第25题: k个一组翻转链表
LeetCode 第25题: k个一组翻转链表转载 2023-02-10 22:29:58 · 259 阅读 · 0 评论 -
一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性h..转载 2022-02-11 20:03:52 · 155 阅读 · 0 评论 -
LeetCode常用算法模式&大厂面试题整理
转载自LeetCode常用算法模式&大厂面试题整理文章目录1、滑动窗口2、双指针3、快慢指针4、合并区间5、循环排序6、就地反转链表7、堆-优先队列问题8、Top K9、归并10、单调栈11、回溯法BATJ等大厂面试真题汇总1、滑动窗口 1 一个左指针,一个右指针。其中左指针用于缩小范围,右指针用于扩大搜索范围。一般求滑动窗口的最小值都是在缩小左指针的时候取得的。 2 右指针扩展的条件时:只要当前还没有满足条件,就暴力增长,直到第一...转载 2021-04-11 22:02:28 · 1069 阅读 · 0 评论 -
完全二叉树-已知中序排序,输出广度排序
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int cmp(int a,int b){ return a < b;}int n;int cnt = 0;void CreateTree(int k,const int a[],int tree[]){ if(k >...转载 2021-04-11 12:44:55 · 274 阅读 · 0 评论 -
根据层次遍历和中序遍历的结果还原一颗二叉树
版权此文件描述了根据层次遍历,中序遍历的结果来还原二叉树的算法我们先分别给出一个层次遍历,和一个中序遍历的结果字符串层次A B C D E F G中序D B A F E G C其对应的二叉树是:A//BC//DE/ /F G接下来详细讲解如果还原这棵二叉树的步骤,我用LEV代表层次遍历MID代表中序遍历。然后我们还需要一个HLP数组用来存放节点指针,其长度和层次/中序...转载 2021-04-11 12:43:05 · 697 阅读 · 0 评论 -
根据二叉树前序遍历和中序遍历还原二叉树Java实现
date: 2019-07-14tags: java根据二叉树前序遍历和中序遍历还原二叉树Java实现问题描述:已知二叉树的前序遍历为{1,2,4,7,3,5,6,8}中序遍历为{4,7,2,1,5,3,8,6}还原二叉树并返回(根节点)思路:已知二叉树的前序遍历和中序遍历如何还原二叉树?从前序遍历的概念来说:根节点-左节点-右节点中序遍历则为:左节点-根节点-右结点对于整个二叉树来说,显而易见前序遍历的第一个元素值就是整个二叉树的根节点所以在前序遍历{1,2,4,7,3,5,.转载 2021-04-11 12:41:43 · 984 阅读 · 0 评论 -
Hive-索引
简介Hive从0.7.0版本开始加入了索引,目的是提高Hive表指定列的查询速度。没有索引的时候,Hive在执行查询时需要加载整个表或者整个分区,然后处理所有的数据,但当在指定列上存在索引,再通过指定列查询时,那么只会加载和处理部分文件。此外,同传统关系型数据库一样,增加索引在提升查询速度的同时,会额外消耗资源去创建索引和需要更多的磁盘空间存储索引。机制和原理Hive的索引其实是一张索引表(Hive的物理表),在表里面存储索引列的值,该值对应的HDFS的文件路径,该值在数据文件中的偏...转载 2021-04-11 12:19:05 · 238 阅读 · 0 评论 -
根据前序遍历和中序遍历结果还原二叉树
一、二叉树二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成。 --《大话数据结构》简单的说,二叉树是一种树,并且最多有2个子树。如图1-1:代码表示: public class TreeNode { public int val; public TreeNode left; public TreeNode righ...转载 2021-04-11 11:58:43 · 3184 阅读 · 0 评论 -
图的BFS和DFS搜索及其JAVA实现
版权本文采用邻接表来构建无向图 (需要基础图的知识)按照提示输入即可完成图的测试。对BFS和DFS代码都进行了详细的注解, 但是如果读者明白算法思想可以事半功倍,这里只给出了实现代码。DFS:深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.举例说明之:下图是一个无向图,如果我们从A点发起深度优先搜索(以下的访问次序并不是唯一的,第二个点既可以是B也可以是C,D),则我们.转载 2021-04-08 11:01:39 · 235 阅读 · 0 评论 -
BFS和DFS遍历二叉树的Java实现
版权参考:https://blog.csdn.net/Gene1994/article/details/85097507文章目录1 DFS 1.1递归 1.2 栈2 BFSDFS可以使用递归和栈实现;BFS只能使用队列实现。1 DFS1.1递归//DFS递归实现public void DFSWithRecursion(TreeNode root) { if (root == null) return; if (root.left !...转载 2021-04-08 10:57:02 · 196 阅读 · 0 评论 -
BFS及DFS的Java实现
前言BFS(广度优先遍历,Breadth First Search)及DFS(深度优先遍历,Depth First Search)是遍历树或图的两种最常用的方法。本文简单的讲解在面对树或者图的问题时,使用BFS及DFS解答题目时的思路及实现。BFS根据上图就可以很清晰的理解出BFS的概念,即一层一层的遍历。在使用BFS解决问题的时候最先想到的方式应该是队列(Queue,FIFO)其主要思想是从起始点开始,将其邻近的所有顶点都加到一个队列(FIFO)中去,然后...转载 2021-04-08 10:55:41 · 647 阅读 · 0 评论 -
缓存算法LRU和LFU比较
对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的缓存淘汰算法的策略和原理就显得特别重要。常见的缓存算法LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。LFU (Least freque.转载 2021-04-06 11:02:58 · 1036 阅读 · 1 评论 -
统计不同回文子字符串--LeetCode730:分析清晰
统计不同回文子字符串–LeetCode730题目给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与10^9 + 7的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个i,A_i != B_i,那么A_1, A_2, ...和B_1, B_2, ...这两个字符序列是不同的。示例 1:输入:S = 'bccb'输出:6解释:6 个不同的非空回文子字符序列分别为:'b...转载 2021-02-01 11:36:59 · 191 阅读 · 0 评论 -
Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
730. 统计不同回文子字符串给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个 i,A_i != B_i,那么 A_1, A_2, … 和 B_1, B_2, … 这两个字符序列是不同的。示例 1:输入:S = ‘bccb’输出:6解释:6 个不同的非空回文子字符序列分别为:‘b’, ‘c’,...转载 2021-02-01 11:35:57 · 142 阅读 · 1 评论 -
JAVA程序设计:统计不同回文子字符串(LeetCode:730)
给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个i,A_i != B_i,那么A_1, A_2, ... 和B_1, B_2, ... 这两个字符序列是不同的。示例 1:输入:S = 'bccb'输出:6解释:6 个不同的非空回文子字符序列分别为:'b', 'c', 'bb', 'c...转载 2021-02-01 11:32:43 · 170 阅读 · 0 评论 -
LeetCode 730: 统计不同回文子字符串(动态规划)
给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个 i,A_i != B_i,那么 A_1, A_2, … 和 B_1, B_2, … 这两个字符序列是不同的。示例 1:输入:S = 'bccb'输出:6解释:6 个不同的非空回文子字符序列分别为:'b', 'c', 'bb', 'cc', 'bc...转载 2021-02-01 10:20:17 · 310 阅读 · 0 评论 -
Leetcode 730:统计不同回文子字符串 -- C语言
需求给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个i,A_i != B_i,那么A_1, A_2, ... 和B_1, B_2, ... 这两个字符序列是不同的。 示例 1:输入:S = 'bccb'输出:6解释:6 个不同的非空回文子字符序列分别为:'b', ...转载 2021-02-01 10:18:42 · 430 阅读 · 0 评论 -
Java字符串的压缩与解压缩
应用场景当字符串太长,需要将字符串值存入数据库时,如果字段长度不够,则会出现插入失败;或者需要进行Http传输时,由于参数长度过长造成http传输失败等。字符串压缩与解压方法方法一:用 Java8中的gzip /** * 使用gzip压缩字符串 * @param str 要压缩的字符串 * @return */ public static String compress(String str) { if (...转载 2021-01-29 14:05:51 · 747 阅读 · 0 评论 -
几种压缩算法的压缩和速度比较 LZ4太快了
Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZOContents[hide]1Selected archives 2Test conditions 3The file test results 3.1Compressed file size in bytes 3.2Compression ratio 3.3Compression time 3.4Decompression time ...转载 2021-01-29 13:53:13 · 1929 阅读 · 0 评论 -
[LeetCode] Perfect Number 完美数字
We define the Perfect Number is apositiveinteger that is equal to the sum of all itspositivedivisors except itself.Now, given anintegern, write a function that returns true when it is a perfect number and false when it is not.Example:Inp...转载 2021-01-28 10:57:50 · 384 阅读 · 0 评论 -
LeetCode刷题 728:自除数2021-01-27
LeetCode刷题:自除数夏枳★•2020年2月7日 pm1:25•IT资讯,程序人生•阅读 8题目自除数 是指可以被它包含的每一位数除尽的数。例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。还有,自除数不允许包含 0 。给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。示例 1:输入: 上边界left = 1, 下边界right = 22 输出: [1...转载 2021-01-27 09:50:14 · 92 阅读 · 0 评论 -
哈希(Hash)和哈希树(Merkle tree)
哈希(Hash)和哈希树(Merkle tree) 哈希函数(英语:Hash function)又称散列函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值/哈希值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。 散列函...转载 2021-01-26 10:51:20 · 2877 阅读 · 0 评论 -
LeetCode 741 动态规划-详细解析 + 图解
解题思路按照题意,一个人来回走两趟,必定在地图上留下两条路径。我们可以想象有两个人,AA 和 BB,同时 从点 (0,0)(0,0) 出发。每一次移动,两个人同时移动一步(向右或向下)。容易证明,每次移动后,两个人必定在同一条对角线上。如果某次移动后,两个人在同一位置,则最多只能摘得一个樱桃。最终,两个人都会移动到点 (N-1,N-1)(N−1,N−1) 上,留下两条路径。这两条路径所摘得樱桃数,即为题目所求。先上图,思路在后面解释:首先可以得到一个比较简单的动态规划思路。转载 2021-01-25 11:55:26 · 543 阅读 · 0 评论 -
LeetCode 741 摘樱桃(动态规划)
一个N x N的网格(grid) 代表了一块樱桃地,每个格子由以下三种数字的一种来表示:0 表示这个格子是空的,所以你可以穿过它。 1 表示这个格子里装着一个樱桃,你可以摘到樱桃然后穿过它。 -1 表示这个格子里有荆棘,挡着你的路。你的任务是在遵守下列规则的情况下,尽可能的摘到最多樱桃:从位置 (0, 0) 出发,最后到达 (N-1, N-1) ,只能向下或向右走,并且只能穿越有效的格子(即只可以穿过值为0或者1的格子);当到达 (N-1, N-1) 后,你要继续走,直到返回到 (0...转载 2021-01-23 14:03:31 · 680 阅读 · 0 评论 -
递归、回溯和DFS的区别
递归是一种算法结构,回溯是一种算法思想。 一个递归就是在函数中调用函数本身来解决问题。 回溯就是通过不同的尝试来生成问题的解,有点类似于穷举,但是和穷举不同的是回溯会“剪枝”。剪枝的意思也就是说对已经知道错误的结果没必要再枚举接下来的答案了,比如一个有序数列1,2,3,4,5,我要找和为5的所有集合,从前往后搜索我选了1,然后2,然后选3的时候发现和已经大于预期,那么4,5肯定也不行,这就是一种对搜索过程的优化。回溯搜索是深度优先搜索(DFS)的一种。对于某一个搜索树来说(搜索树是起记录路径...转载 2021-01-21 11:42:38 · 664 阅读 · 0 评论 -
LeetCode 488. 祖玛游戏
题目描述回忆一下祖玛游戏。现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W)。 现在你手里也有几个球。每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置上(包括最左端,最右端)。接着,如果有出现三个或者三个以上颜色相同的球相连的话,就把它们移除掉。重复这一步骤直到桌上所有的球都被移除。找到插入并可以移除掉桌上所有球所需的最少的球数。如果不能移除桌上所有的球,输出 -1 。样例示例: 输入: "WRRBBW", "RB" 输出: -1 解.转载 2021-01-21 11:39:29 · 191 阅读 · 0 评论 -
Leetcode 488.祖玛游戏
祖玛游戏回忆一下祖玛游戏。现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W)。 现在你手里也有几个球。每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置上(包括最左端,最右端)。接着,如果有出现三个或者三个以上颜色相同的球相连的话,就把它们移除掉。重复这一步骤直到桌上所有的球都被移除。找到插入并可以移除掉桌上所有球所需的最少的球数。如果不能移除桌上所有的球,输出 -1 。示例:输入:"WRRBBW", "RB"输出:-1...转载 2021-01-21 11:31:34 · 1058 阅读 · 0 评论