自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法--滑动窗口和单调栈

滑动窗口通常用于解决与数组或字符串中的连续子序列相关的问题,特别是当问题可以归结为“找到满足特定条件的子序列”时。找到子序列的最大或最小和/乘积:例如,找到数组中和最大的连续子数组。满足特定条件的子序列:例如,找到所有字符都是奇数的最长子字符串。维护一个窗口内的状态:例如,找到窗口内所有元素都是正数的最长子数组。计数问题:例如,找到数组中不同整数对的最大数量,使得一对数的和为特定值。

2024-09-13 17:23:31 733

原创 线段树(java)

1.线段树主要用于处理区间查询和区间更新问题,如数组范围的加法和查询。2.线段树的深度通常不会太大,即使在处理大规模数据时也能保持高效。3.线段树适用于解决单个操作复杂度较高但总体数据量大的问题。

2024-09-09 22:09:18 464

原创 Morris遍历

Morris遍历是一种二叉树遍历方法,通过改写指针来实现无额外空间复杂度的遍历。Morris遍历适用于内存紧张的环境,如嵌入式编程和系统编程,以减少空间占用。Morris遍历的核心在于利用节点上的空闲指针,通过巧妙地改变指针指向来实现遍历。时间复杂度为O(n),空间复杂度为O(1)

2024-09-08 21:50:00 833

原创 bfprt算法和蓄水池算法

该方法的时间复杂度是 O(N + K*logN),其中 N 是数组的长度。这是因为建堆的时间复杂度是 O(N),而每次从堆中取出最小元素的操作(即每次堆的调整)的时间复杂度是 O(logN),需要进行 K 次。BFPRT算法的核心思想是在选择基准值(pivot)时,采用三数取中法来选择一个更接近数组中位数的值,以此来提高算法的效率,尤其是在面对部分已经排序或存在大量重复元素的数组时。1.蓄水池抽样算法用于从流式数据中随机抽取固定数量的样本,保证每个样本被选中的概率相等。使用一个最小堆来找出整数数组。

2024-09-08 16:30:20 672

原创 Manacher算法

Manacher算法用于解决最长回文子串问题,能在O(n)时间复杂度内找到最长回文子串。(回文:正过来和倒过来念一样)算法通过构造一个处理串,将原始字符串中的每个字符之间和两端加入特殊字符,使得原始字符串中的回文串在处理串中表现为回文串。处理串的构造目的是将所有回文串(包括长度为奇数和偶数的回文串)统一处理,简化问题。回文半径数组:记录以每个位置为中心向左两边扩展的长度,用于快速找到以各位置为中心的最长回文子串。最右回文右边界:用于跟踪在扩展过程中最右边的回文边界位置,优化后续位置的扩展过程。

2024-09-07 19:47:33 325

原创 KMP算法

通过next数组加速字符串匹配。

2024-09-07 15:55:50 218

原创 斐波拉契数列矩阵乘法

(需要线性代数基础)

2024-09-05 21:42:21 316

原创 单调栈结构

题目2:给定一个只包含正数的数组arr,arr中任何一个子数组sub,一定都可以算出(sub累加和)* (sub中的最小值)是什么,那么所有子数组中,这个值最大是多少?题目4:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。题目5:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的矩形数量。题目3:给定一个非负数组arr,代表直方图,返回直方图的最大长方形面积。求每个数字左右两边离他最近最小的数。

2024-09-04 22:47:48 312

原创 窗口内最大值或最小值的更新结构

滑动窗口是一种想象出来的数据结构:滑动窗口有左边界L和右边界R。在数组或者字符串或者一个序列上,记为S,窗口就是S[L...R]这一部分,L往右滑意味着一个样本出了窗口,R往右划意味着一个样本进了窗口。某个arr中的子数组sub,如果想达标,必修满足:sub中最大值减sub中最小值<=num,返回arr中达标子数组的数量。题1:假设一个固定大小为W的窗口,依次划过arr,返回每一次滑出状况的最大值。例如,arr=[4,3,5,4,3,3,6,7],W=3,返回:[5,5,5,4,6,7]

2024-09-02 20:53:25 240

原创 算法学习--暴力递归到动态规划(三)

有重复调用同一个子问题的解,这种递归可以优化如果每一个子问题都是不同的解,无法优化也不用优化某一个暴力递归,有解的重复调用,就可以把这个暴力递归优化成动态规划任何动态规划问题,都一定对应着某一个有重复过程的暴力递归但不是所有的暴力递归,都一定对应动态规划如果找到某个问题的动态规划方式?1)设计暴力递归:重要原则+4种常见尝试模型2)分析有没有重复解3)用记忆化搜索->用严格表结构实现动态规划:套路解决4)看看是否能继续优化。

2024-08-02 17:39:16 336

原创 算法学习--暴力递归到动态规划(二)

题连接https://leetcode.com/problems/longest-palindromic-subsequence/把二维的变一维的,节省空间。

2024-07-29 16:09:54 186

原创 算法学习--暴力递归到动态规划(一)

优化代码由上面再优化成动态规划: 题2: 优化代码: 动态规划版:

2024-07-20 15:42:10 203

原创 算法学习--一些经典递归

给你一个栈,请你逆序这个栈,不能申请额外的数据结构,只能使用递归函数。

2024-07-19 22:18:50 203

原创 小白算法学习--图(java)

题链接https://www.lintcode.com/problem/topological-sorting。法2:计算每个节点的节点总数,然后根据这个总数对节点进行排序,最后返回排序后的节点列表作为拓扑排序的结果。法1:计算每个节点的深度,然后根据深度对节点进行排序,最后返回排序后的节点列表作为拓扑排序的结果。针对给定的有向图找到任意一种拓扑排序的顺序.

2024-07-19 19:42:48 571

原创 小白算法学习--堆和加强堆(java)

假如堆里面中间有某数变了,执行1)heapinsert 2)heapify,就能把堆排对了。PriorityQueue默认是小根堆。

2024-07-19 19:23:38 188

原创 并查集(java)

并查集的思想:用一个数组表示了整片森林(parent),树的根节点唯一标识一个集合,只要找到了某个元素的的树根,就能确它在哪个集合里。你将会被给定一个列表,来记录所有需要被操作的位置,然后你需要返回计算出来 每次 addLand 操作后岛屿的数量。题2:给定一个二维数组matrix,里面的值不是1就是0,上下左右相邻认为是一片岛,返回matrix中岛的数量。注意:一个岛的定义是被「水」包围的「陆地」,通过水平方向或者垂直方向上相邻的陆地连接而成。是一组直接或间接相连的城市,组内不含其他没有相连的城市。

2024-07-14 16:47:20 387

原创 小白学习贪心算法(java)

补充:字典序:ASCII码,看成数字比大小1)“abc”<“bcd” 2)"abcd"<"b"(b会补成b000)

2024-07-12 21:42:17 337 1

原创 Docker部署深度学习

1.下载Ubuntudocker pull docker.io/library/ubuntu:18.042.通过镜像运行一个容器[root@localhost ~]# docker run -dit -v /root/lgf:/root/lgf -p 5001:5000 --name=tests docker.io/ubuntu:18.04-v挂载 -p暴露端口主机地址:容器地址 --name取名字-d后台启动 -it以交互方式启动容器-dit 当ENTRYPOINTi...

2021-11-18 23:38:19 2123

原创 SpringCloud学习笔记

一.什么是微服务1.微服务的由来微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并且使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并且能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,一级不同数据存储技术,并保持最低限度的集中式管理2.为什么需要微服务在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于SOA早期均使用了总

2021-11-06 13:25:45 263

原创 Docker笔记

【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili一.Docker为什么出现软件开发一般大致分为两个环节,第一是本地开发, 第二是服务器部署。如果一个项目本地开发好了,那么放到服务器上,有时候安装环境会非常复杂,也正是因为其复杂性,大公司才会有专门负责项目发布的运维人员。为了解决这个问题,docker技术应运而Docker给出了解决办法Docker思想来自于集装箱,打包装箱,每个箱子互相隔离,通过隔离机制,将服务器运用到极致二.虚拟化技术和容器化技术对比1

2021-11-04 23:49:04 327

原创 postman测试使用

1.测试之前要登录获取token,其他需要token的接口都需要在Headers里面添加token测试删除测试文件和对象参数

2021-10-24 23:49:42 77

RFID.pdf

RFID.pdf

2022-11-24

空空如也

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

TA关注的人

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