【LeetCode 面试经典150题】5-哈希表
1 哈希表的基础12.23 一刷 哈希表是一种基于哈希算法实现的键值对集合,提供了快速的数据插入、删除和查找功能。Java提供了HashMap、Hashtable和LinkedHashMap等实现哈希表的类。以下是Java哈希表的一些基础概念和操作: 1.1 基础概念及实现1.2.1 哈希表的工作原理哈希表通过哈希函数将键(Key)映射到哈希表的索引上,然后通过这个索引来访问值(Value)。如果两个键的哈希值相同(哈希冲突),则通过链表或其他方法来解决冲突。 1.2.2 705.设计哈希集合705. 设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈希集合中插入值 key 。 bool contains(key) 返回哈希集合中是否存在这个值 key 。 void remove(key) 将给定值 key...
【LeetCode 面试经典150题】4-矩阵
1 矩阵的基础感觉矩阵的题很简单。迅速过完 12.23 一刷 1.1 表示矩阵在Java中,矩阵通常可以用二维数组(int[][]、double[][]等)来表示。每个内部数组代表矩阵的一行。 12345int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 1.2 创建矩阵创建矩阵可以通过直接声明和初始化,或者使用循环动态创建。 12345678int rows = 3;int columns = 3;int[][] matrix = new int[rows][columns];for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { matrix[i][j] = i * columns + j; }} 相关题目36.有效的数独...
【LeetCode 面试经典150题】3-滑动窗口
1 滑动窗口理论基础1.1 算法思想一个固定大小的窗口在数据序列上滑动,并在窗口内执行特定操作的问题。 通俗的讲就是,对于数组,维持一个特定窗口/动态可变窗口,通过该窗口来在数组或者字符串上进行操作。 字面意思上理解: 滑动 : 窗口时移动的,就是按照一定方向来进行移动 窗口:窗口大小并不是固定的,而是不断扩容直到满足一定条件;也可以不断缩小,找到满足条件的最小窗口;也可以固定大小。 1.2 使用场景 满足xx条件(计算结果,出现次数,同时包含) 最长/最短 子串/子数组/子序列 感觉是你认为需要在一个数组/字符串中维持一个滑动的窗口来解题的题,都可以用滑动窗口来解决。 1.3 使用思路寻找最长 核心:左右双指针(l.r),$[l,r]$即为窗口内的元素。r为窗口的结束位置,l为窗口的起始位置。 每次滑动过程中:窗内元素满足条件,r向右移动扩大窗口,更新最优结果;窗内元素不满足条件,L向右移动缩小窗口。 模板如下: 12345678int l = 0; // 窗内的起始位置for(int r =...
6-Hexo美化之给文章随机添加首页图片并添加Githubchart
1 文章添加首页图片1.1 设置文章的默认封面图在主题配置文件中添加:(我的主题配置文件是_config.fluid.yml)按照每个人自己的设置 1234567891011121314#---------------------------# 文章页# Post Page#---------------------------post: # 文章在首页的默认封面图,当没有指定 index_img 时会使用该图片,若两者都为空则不显示任何图片 # Path of the default post cover when `index_img` is not set. If both are empty, no image will be displayed default_index_img: - https://img.xjh.me/random_img.php?type=bg&ctype=nature&return=302 # https://tuapi.eees.cc/api.php?category=meinv #...
5-Hexo整合Fluid主题使用utterances评论系统
1. 如何在Hexo Fluid上搭载utterances1. 1新建repo,设置utterances 在GitHub上面新建一个public的仓库,名称可以随意 进入 https://github.com/apps/utterances 为刚才新建的仓库安装utterances 之后在 https://utteranc.es/ 页面中对 utterances 进行设置 之后就是一些其它的参数,自行按照喜好设置即可: 最后我们得到: 1234567<script src="https://utteranc.es/client.js" repo="xianghua-2/comment-hexo" issue-term="pathname" theme="github-light" crossorigin="anonymous" ...
4-Hexo整合Fluid主题实现PV统计以及建站时间统计
1 前言(fluid + busuanzi)本篇博客基于busuanzi统计博客页面访问次数与访问人数、及文章阅读次数,以及实现建站时间统计功能 2 PVUV统计配置2.1 修改_config.fluid.yml中的footer内容 打开fluid的主题配置文件_config.fluid.yml,修改footer下的statistics ,将enable标签修改为true,source修改为busuanzi,这样可以在博客页面最下面看到访问人数与访问次数 1234567891011121314151617181920#---------------------------# 页脚# Footer#---------------------------footer: # 展示网站的 PV、UV 统计数 # Display website PV and UV statistics statistics: enable: true # 统计数据来源,使用 leancloud, umami 需要设置 `web_analytics` 中对应的参数;使用 busuanzi...
3-Hexo实现文章分类以及自动为文章添加分类插件
1.问题描述在上传了两篇博客之后发现,假如不自行管理的话,所有的文章都会在source/_post目录下,这样不便于查看和修改。 因此想要在_post目录下建立子目录,之后再添加分类插件,使得在该目录下新建的文章都能够自动添加分类 因此,我想要实现的目的就是 hexo根据_post中的文件夹自动为文章生成分类 2.实现步骤2.1 安装分类插件命令行中运行如下命令 1npm install hexo-auto-category --save 修改项目根目录下的_config.yml文件。向该文件中加入如下内容 1234567# Generate categories from directory-tree# Dependencies: https://github.com/xu-song/hexo-auto-category# depth: the depth of directory-tree you want to generate, should > 0auto_category: enable: true multiple: false depth:...
2-Hexo整合Typora实现图片上传
1. 问题描述众所周知,在 md 文件中插入图片的语法为 ![]()。 其中方括号是图片描述,圆括号是图片路径。 一般来说有三种图片路径,分别是相对路径,绝对路径和网络路径。 1.1 网络路径(图床)所谓的网络路径就是直接引用网上的图片,直接复制图片的网络地址,放在圆括号中就完事了。 这种方式十分的方便,但是也存在一定的问题: 图片失效导致无法加载; 打开网页后要再请求加载图片; 原网站限制,如微信公众号的图片会变得不可见等。 1.2 绝对路径绝对路径是图片在计算机中的绝对位置。 1.3 相对路径相对路径是相对于当前文件的路径。 当采用相对路径时,如果你的 Hexo 项目中只有少量图片,那最简单的方法就是将它们放在 /source/images 文件夹中。然后通过类似于  的方法访问它们。 对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo 也提供了更组织化的方式来管理资源。你需要将 _config.yml 文件中的 post_asset_folder 选项设为 true...
1-Hexo搭建博客并部署到GithubPages
1.事前准备 域名(非必须,你也可以使用免费域名,或者GitHub.io或Pages.dev分配的域名也可以) GitHub(必须,你需要注册一个GitHub帐号) 2.软件支持 Node(必须) Git(必须) VSCode(非必须,这是一款轻量型的代码编辑器,可以帮助你养成一个很好的编程习惯) 2.1.安装 Node 打开Node官网,下载和自己系统相配的Node的安装程序,否则会出现安装问题。下载地址:https://nodejs.org/en 下载后安装,安装的目录可以使用默认目录C:/Program Files/nodejs/ 安装完成后,检查是否安装成功。在键盘按下win + R键,输入CMD,然后回车,打开CMD窗口,执行node -v命令,看到版本信息,则说明安装成功。 修改npm源。npm下载各种模块,默认是从国处服务器下载,速度较慢,建议配置成华为云镜像源。打开CMD窗口,运行如下命令: 1npm config set registry https://mirrors.huaweicloud.com/repository/npm/ 2.2.安装...