数据结构与算法
文章平均质量分 79
以记录一些算法题为主,分享自己的思路以及解题代码
乐无声
这个作者很懒,什么都没留下…
展开
-
前缀树详解-Java版
文章目录前言一、前缀树介绍一、前缀树的表示1、数组2、Map二、插入总结前言今天在做算法题的时候,遇到了一道用到前缀树这种数据结构的题目,借此机会,写篇博文,记录一下前缀树到底是什么?一、前缀树介绍 前缀树(字典树)是N叉树的一种特殊形式。通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的。例如,现在我要存储字符串[“Y原创 2021-08-01 20:47:00 · 2368 阅读 · 1 评论 -
二分法小总结
前言最近在做算法题的时候,发现二分法有许多小细节,稍不注意就导致出错,特此写下这篇博客,记录一下!二分法的应用场景二分法的应用场景一般有搜索某个数、寻找某个数的左右边界(当然,前提数组有序)。下面直接贴上代码后再总结:(1)搜索某个数:right以num.length - 1 结尾int Search(int[] nums, int target) { int left = 0; int right = nums.length - 1; //细节点 while(l原创 2021-06-07 16:21:57 · 160 阅读 · 0 评论 -
大白话讲KMP算法
图片部分来源于网上,侵删。文章目录前言一、KMP算法1、简单介绍2、算法原理二、next数组1.原理介绍2.代码介绍三、整体代码前言kmp算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作。它的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。kmp算法的时间复杂度O(m+n)。(搜狗百科)说了这么多原创 2021-05-05 21:10:14 · 192 阅读 · 0 评论 -
算法题-滑动窗口的最大值
题目(来源力扣):给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3原创 2021-04-29 22:51:12 · 188 阅读 · 0 评论 -
数据结构-堆(附算法题以及堆实现程序)
import java.util.Arrays;import java.util.Random;public class Demo08 { public static void main(String[] args) { Heap heap = new Heap(); //随机添加150个Integer for(int i=0;i<150;++i){ heap.add(new Random().nextInt(10原创 2021-03-21 00:54:31 · 575 阅读 · 2 评论