自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sakura_lht

一份简单的学习记录。

  • 博客(26)
  • 收藏
  • 关注

原创 动态规划入门(一):股票买卖系列问题

1 本文内容动态规划专题,通过股票买卖问题学习一维、二维的动态规划算法以及滚动数组的空间优化。leetcode 121. 买卖股票的最佳时机【easy】leetcode 122. 买卖股票的最佳时机 II【medium】leetcode 123. 买卖股票的最佳时机 III【hard】leetcode 188. 买卖股票的最佳时机 IV【hard】leetcode 309. 最佳买卖股票时机含冷冻期【medium】leetcode 714. 买卖股票的最佳时机含手续费【medium】2

2022-01-08 22:17:11 530

原创 解决macOS启动SpringBoot很慢的问题

1. 问题查看打印的日志发现,第一行出现一个warn警告:inetaddress.getlocalhost().gethostname() took 5005 milliseconds to respond. please verify your network configuration (macos machines may need to add entries to /etc/hosts).意思是主机名地址解析花了5秒多,请检查你的网络配置(macos的机器名可能需要加入/etc/hosts中

2021-12-09 22:22:33 1132

原创 单机部署kafka多实例

一、部署zookeeper多实例(3实例)1. 下载解压zookeeper后,复制3份:tar -zxvf apache-zookeeper-3.6.3-bin.tar.gzmv apache-zookeeper-3.6.3 zk01 # 改名mkdir zk # 创建文件夹mv zk01 zk/zk01 # 移动cd zk # 进入zk目录cp zk01 zk02 # 复制cp zk01 zk03 # 复制2. 每个zk0x文件中有 conf/zoo_s

2021-12-08 16:36:17 657

原创 二分查找,数组有序不是必要条件

1. 二分查找法介绍1.1 二分查找法概念先来一段维基百科概念。“二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。”简单来说,就是在序列中找到一个分割点,使得我们需要找的答案一定在某一边的子序列而不在

2021-02-01 17:35:26 4197 3

原创 双指针法---将序列双层遍历问题优化为单层

1. 双指针算法介绍1.1 什么是双指针法狭义上的双指针法是指利用两个指针去遍历序列(通常为数组或字符串),一个放首,一个放尾,同时向中间遍历,直到两个指针碰撞,完成遍历。 0 1 2 3 4 5 6 i --> <-- j[x x x x x x x] i j [i = 0, j = 6] i j [i = 1, j = 6] i j

2021-01-31 23:23:53 457

原创 一套模版搞定滑动窗口算法

1. 滑动窗口算法探究1.1 一“图”搞懂滑动窗口算法 [a, b, c, d, e, f, g, ...] lr [初始化窗口, r++] l r [维护窗口数据信息,窗口数据满足某个条件,r++] l r [维护窗口数据信息,窗口数据满足某个条件,r++] l r [维护窗口

2021-01-24 22:56:28 231

原创 排序算法合集及其应用举例

1. 排序算法一表总览排序算法最好时间复杂度最坏时间复杂度平均时间复杂的空间复杂度排序方式稳定性快速排序O(nlog⁡n)O(n\log n)O(nlogn)O(n2)O(n^2)O(n2)O(nlog⁡n)O(n\log n)O(nlogn)O(log⁡n)O(\log n)O(logn)交换不稳定计数排序O(k+n)O(k + n)O(k+n)O(k+n)O(k + n)O(k+n)O(k+n)O(k + n)O(k+n)O(k+n)O(k +

2021-01-24 15:40:41 1293 4

原创 快速排序的“四种”写法

1. 序言:鲁迅先生笔下孔乙己的茴香豆四种写法的故事让大家常引得大家哄堂大笑,诚然我们不需要掌握茴香豆的四种写法,也无需掌握hello world的各种写法,但作为一个技术人员,还是需要懂得一题多解甚至一解多样,锤炼技术才是我们端好这碗饭的不二法门。快速排序是一种最为常用的排序方法,其主要思想“分治”更是一种必须掌握的关键算法。快速排序代码简单,但其边界处理和关键字处理是一项比较麻烦的内容,今天来梳理一下快速排序的多种写法,以便于各位找到一种最容易理解和接受的写法。2. 四种写法2.1 先移后判换两

2021-01-16 17:54:10 1762

原创 数据结构:哈希表原理与HashTable、HashMap、HashSet

哈希表原理简析;HashMap源码详细分析;HashMap和HashTable的对比

2020-02-21 00:02:35 290

原创 数据结构:红黑树原理与TreeMap、TreeSet

简单分析红黑树的概念与性质,重点关注红黑树的旋转、插入、删除等核心操作原理以及实现。浅析插入及删除操作循环内部的状态转换。全文参考自《算法导论》

2020-02-19 00:06:24 275

原创 数据结构之二叉搜索树(BST)与Java实现

二叉搜索树概念;插入,删除,查找,寻找最大(最小),寻找前驱(后继)等相关操作全文参考自《算法导论》

2020-01-05 17:09:51 250

原创 数据结构之图:单源最短路径算法详解与Java实现(Dijkstra算法与Bellman-Ford算法)

以通俗易懂的方式(讨论+图解+代码)的形式叙述有向图最经典的最短路径算法:Dijkstra算法和Bellman-Ford算法(另外有SPFA算法)

2020-01-03 16:01:55 402

原创 数据结构之图:最小生成树算法详解与Java实现(Kruskal算法与Prim算法)

核心思想+图解+代码的形式讲解最小生成树的经典算法:Kruskal算法(克鲁斯卡尔算法)和Prim算法(普里姆算法)

2019-12-13 20:52:46 349

原创 数据结构之并查集:按秩合并与路径压缩优化

并查集1.并查集描述一些有NNN个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。为了快速解决这些问题,便有了并查集的概念。并查集维护了一个不相交的动态集的集合S1,S2,⋯ ,Sn{S_1,S_2,\cdots,S_n}S1​,S2​,⋯,Sn​,每个集合将有一个"首领"来标识该集...

2019-11-15 17:54:35 2113

原创 数据结构之图:深度优先与广度优先搜索算法Java实现

一、图的表示1.图的两种表示1.1 邻接表对于图G=(V,E)G=(V,E)G=(V,E)来说,邻接表表示由一个包含∣V∣|V|∣V∣条链表的数组AAA构成,对于每一个结点u∈Vu\in Vu∈V,邻接链表A[u]A[u]A[u]包含所有与结点uuu之间有边相连的结点。如下图所示:如上图,图GGG是一个无向图,则对于边(u,v)(u,v)(u,v)来说,结点vvv将出现在链表A[u]A...

2019-11-10 17:56:12 382

原创 数据结构之二叉树与Java实现(非递归遍历详解)

一、二叉树相关知识1.树1.1 树的概念树是由n(n≥0)n(n \geq 0)n(n≥0)个结点构成的集合,每个结点至多有一个前驱结点(根结点没有前驱结点),每个结点有若干个后继结点,结点满足条件:n>1n \gt 1n>1时,除根结点以外的所有结点被分为若干个不相交的集合S1,S2,⋯ ,SkS_1,S_2,\cdots,S_kS1​,S2​,⋯,Sk​,其中每个集合又符合...

2019-11-04 20:26:09 373

原创 数据结构之堆与Java实现

一、堆1.堆的概念堆时一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素 。除了树的最底层外,该树是完全充满的,底层不满时从左往右填充。2.堆的性质2.1 堆的高度把堆看作一颗树,则堆中某个结点的高度就是该结点到叶结点最长简单路径上的边的数目。如此一来,堆的高度就是堆顶到叶子节点的最长简单路径上的边的数量。也即lg(N)lg(N)lg(N),之后我们可以发...

2019-10-24 14:50:51 194

原创 数据结构之队列与Java中的Queue,PriorityQueue

一、队列1.队列简介2.队列结构及其特点3.顺序队列的假溢出问题4.队列基本功能实现5.性能分析6.优先级队列二、Queue 与 PriorityQueue1.Queue接口Queue是Java中关于队列的最顶级的接口,所有与队列有关类或接口均与Queue有直接或间接的关系,它继承自Collection类。除去Collection类中的方法,它还提供入队,出队,查看队头元素的方...

2019-10-19 17:57:35 214

原创 数据结构之栈与Java中的Stack、Deque

栈1.栈的定义2.栈类型、结构及其特点3.顺序栈的基本功能实现4.链式栈的基本功能实现Stack1.Stack介绍2.Stack部分源码分析3.为什么说Stack是不优良的设计Deque1.使用Deque代替Stack2.ArrayDeque部分源码分析3.再谈LinkedList总结...

2019-09-22 21:19:39 1147 2

原创 数据结构之链表与Java中的LinkedList

链表1.链表定义链表是线性表的一种。线性表的定义为:一种可以在任意位置进行插入和删除数据元素操作的,由n个相同类型数据元素a0,a1,a2,⋯ ,an−1a_{0},a_{1},a_{2},\cdots,a_{n-1}a0​,a1​,a2​,⋯,an−1​组成的线性结构。其数据元素满足除第一个元素和最后一个元素外,每个元素只有一个直接前驱和直接后继,第一个元素没有前驱元素,最后一个元素没有后...

2019-09-11 11:57:18 254 1

原创 数据结构之顺序表与Java中的ArrayList、Vector

顺序表1.什么是顺序表顺序表是线性表的一种。线性表的定义为:一种可以在任意位置进行插入和删除数据元素操作的,由n个相同类型数据元素a0,a1,a2,⋯ ,an−1a_{0},a_{1},a_{2},\cdots,a_{n-1}a0​,a1​,a2​,⋯,an−1​组成的线性结构。其数据元素满足除第一个元素和最后一个元素外,每个元素只有一个直接前驱和直接后继,第一个元素没有前驱元素,最后一个元...

2019-09-10 00:06:58 300

原创 Java集合框架总览

Java集合Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类。接口:代表集合的抽象数据类型。例如 Collection、List、Set、Queue、Map 等,这些接口以不同的方式操作集合...

2019-09-04 19:59:00 101

原创 Java线程类

基础知识线程状态根据Thread.State类中的描述,Java中线程有六种状态:NEW,RUNNABLE,WAITING,TERMINATED,BLOCKED。就绪状态(NEW):当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。运行状态(RUNNABLE):如果就绪状态的线程获取 CPU 资源,就可以执行...

2019-08-09 21:23:00 225

原创 Java输入输出流

相关概念流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。流的源端和目的端可简单地看成是数据的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。流的划分:按照流向...

2019-08-05 21:23:00 83

原创 command ' cl.exe' failed: No such file or directory解决办法

1.安装C ++编译器https://pan.baidu.com/s/1fBDFxK2C_V9I7D_AJ3c1iw 提取码:su3u2.找到安装文件夹:Visual C++ Build Tools3.打开Visual C++ 2015 x86 x64 Cross Build Tools Command Prompt4.输入pip install xxx(package_nam...

2019-04-14 20:13:00 9462 1

原创 python迭代器与生成器

概述迭代是数据处理的基石,扫描内存中放不下的数据时,我们需要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式。在python中,所有集合都可以迭代。在python语言内部,迭代器用于支持:(1)for循环(2)构建和扩展集合类型(3)逐行遍历文本文件(4)列表推导,字典推导和集合推导(5)元组拆包(6)调用函数时,用*拆包python没有...

2019-01-25 22:28:00 204

空空如也

空空如也

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

TA关注的人

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