自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LH is programming hard

心之所往,吾必为之!

  • 博客(286)
  • 资源 (3)
  • 收藏
  • 关注

原创 MongoDB5.0安装总结(简单)

文章目录前言安装步骤下载安装测试错误总结卸载MongoDB图形化界面Robo 3T前言网上的教程真几把恶心,一堆错误。总结一波吧,免得下次安装到处找教程,结果都是错的。安装步骤下载安装1、安装MongoDB5.0官网下载:MongoDB点击download下载,安装:前面一路next,然后这里选custom:选择安装位置:取消勾选:取消勾选:为什么要选择msi下载呢?因为你安装了以后,bin目录下自带官方的配置文件:mongod.cfg点开看看:如果你不使用

2022-02-15 12:40:14 1847 2

原创 微信公众号半自动化复制图片

文章目录微信公众号半自动化复制图片背景效果项目打包为exe文件遇到的问题结尾微信公众号半自动化复制图片背景前几天,开始想着把自己的学习笔记和博客上传到微信公众号,然后发现如果要上传图片,得一个一个路径打开复制黏贴上去,贼麻烦,降低效率。由于自己写的内容都是md文件,然后图片的样式都是以下类型:![1632019686859](I:\学习文档\my_picture_learning\1632019686859.png)于是想着,如果我写了一个软件,用户点击想要上传的md文件,该软件可以自动将所有

2022-02-09 18:29:27 7718

原创 Spring实战第四版——读书笔记目录

看了Spring in Action 第四版:大神作者写的省略了好多细节,自己拜读的过程,踩了不少坑,写个笔记总结,方便复习,同时也给后面读的各位留点心得查阅,交流!第一部分:Spring的核心01 Spring概念入门02 装配Bean03 高级装配04 面向切面AOP第二部分:Web中的Spring待更第三部分:后端中的Spring待更第四部分:Spring集成待更...

2022-02-08 22:18:45 347

原创 git配置和上传文件

文章目录配置配置用户名配置邮箱生成SSH 密钥上传项目代码配置配置用户名git config --global user.name "username" 配置邮箱git config --global user.email "[email protected]" 以上命令执行结束后,可用 git config --global --list 命令查看配置是否OK生成SSH 密钥ssh-keygen -t rsa1、注意生产钥匙位置然后连敲三次回车键,结束后去系统盘目录下(一般在

2022-02-03 14:22:41 1009

原创 GitHub does not provide shell access.

解决git连接问题: You‘ve successfully authenticated, but GitHub does not provide shell access.情形1、生成新的ssh 密钥,添加到github里面中ssh-keygen -t rsa 邮箱三次enter,把生成的公钥添加到自己的github私钥加上:ssh-add 私钥位置最后在所要同步的项目上:git init情形2、如果是新创建的项目:先进入到对应的项目位置git initgit remote

2022-02-03 14:15:13 4710

原创 warning: LF will be replaced by CRLF in chapter-7/pom.xml. The file will have its original line end

warning: LF will be replaced by CRLF in chapter-7/pom.xml.The file will have its original line endings in your working directory在Unix系统中,行尾用换行\n表示。在Windows中,一行由\r\n表示。当你从一个unix系统上传的git代码时,他们只会有一个\n。如果您是一个在windows机器上工作的开发人员,并且您不关心git自动将\n替换为\r\n,您可以通过在git

2022-02-03 14:04:10 529

原创 数据结构复习(栈队列一)实现前序、后序、中序表达式的互相转化及构建二叉树(代码实现)

栈和队列一()1、类型最大栈最小栈流式数据的最小值单调队列两个栈实现一个队列栈的前缀后缀表达式求值栈的出栈序列判断其他2、基本应用1) 150. 逆波兰表达式求值 后缀表达式求值波兰表达式计算 > 输入: ["2", "1", "+", "3", "*"] > 输出: 9解释: ((2 + 1) * 3) = 9学栈的时候,我们需要两个栈,一个是符号栈,一个是操作数栈,()需要去除。import java.util.Stack;class Soluti

2021-10-02 21:57:10 430

原创 Tomcat乱码情况完美解决

之前改了又忘记,所以要记录下来。否则凭借记忆老只让server这一栏是显示正常而Catalina这一栏还是乱漫。Tomcat 乱码情况:是cmd乱码——改tomcat里面的conf下的logging配置编码即可。是IDEA里面的乱码,如果只改了一部分编码,则可能只有server下是不乱吗,而Catalina这一栏还是乱码。完整操作,做完一般显示如下:做法:暴力一致改为UTF-8即可:1、tomcat里面的conf下的logging配置都改为UTF-82、修改idea里面相关编码:.

2021-08-13 19:52:39 750

原创 词法分析程序之NFA转DFA和DFA的最小化

原理(1)——NFA转DFA转化方法我们必须知道如何将DFA转化为DFA——利用子集构造法步骤:为NFA添加一个开始结点和终止结点(上一节的程序本来就是这样设计)对NFA中的结点,对开始结点做闭包,得到结点集合,以该结点集合开始,计算该集合对每一种符号的Ia、Ib观察这些Ia、Ib在第一列是否存在?存在则不需要添加,否则添加,然后对其计算Ia、Ib,重复操作,直到所有的都已经添加过了。对上述的结点集合重新命名,得到确定化的DFA的状态转化表。根据该表选出代表结点,连接边,得到确定化的DFA

2021-04-17 11:33:34 1449 3

原创 词法分析程序之正规式转换成NFA

文章目录前言正规式变成NFA前备知识中缀表达式和后缀表达式(细节处理)输入正规式和转换NFA测试结果完整代码前言编译原理课里面书本有一个作业——使用C++实现:将正规式变成NFANFA确定化(变成DFA)DFA最小化(化简)自己学习过程中,深刻知道自己动手写东西是多么的重要。所以,我开始从0开始写这个作业。每个自学的人都要明白自己和科班的人差距在哪里——基础!基础!所以一定要花时间去补回来。正规式变成NFA前备知识在动手之前,一定学会分析要怎么做怎么做,有哪几个类,不要上去就是一段代

2021-04-16 12:41:10 4102 4

原创 LeetCode1312、让字符串成为回文串的最少操作次数(区间动态规划方法)

题目描述https://leetcode-cn.com/problems/minimum-insertion-steps-to-make-a-string-palindrome/解法class Solution { public int minInsertions(String s) { if(s==null || s.length()<=1) return 0; //将字符串分成两部分 int n = s.length();

2021-04-02 12:16:48 2717

原创 LeetCode打家劫舍系列(经典动态规划系列问题)

文章目录题目列表逐一攻破198、打家劫舍(中等)213、打家劫舍II(中等)337、打家劫舍III(中等)题目列表逐一攻破198、打家劫舍(中等)看到题目,我们以常规动态规划的思路去思考:状态:题目有哪些变量?第i间房子的金钱数,每次能够偷盗的房间不允许相邻。目前小偷的位置于是我们描述出:dp[i]表示偷盗到第i家房子时的最大金额数思考递推过程,目前的位置在第i家房子,不允许相邻偷盗,则在我们之前的房子中选择能够偷盗的最大金钱max的房子,dp[i] = max+nums[i-1];i-

2021-04-01 12:14:38 252

原创 深入理解java虚拟机第一第二部分(周志明第三版)

文章目录深入理解java虚拟机(周志明第三版)第一部分、Java的前世今生和未来展望1.1、概述1.2、java技术体系1.3、Java发展史(只记录比较重要的)1.4、Java虚拟机家族1.5、展望Java技术的未来1.6、自己动手编译JDK、IDE里面调试第二部分、自动内存管理2、Java内存区域与内存溢出异常2.2、虚拟机内存管理2.3、HotSpot虚拟机对象的探究(如何创建、布局、访问一个对象)2.4、OutOfMemoryError实战3、垃圾收集器与内存分配策略3.1、概述3.2、如何判断对象

2021-03-31 16:21:59 474

原创 IDEA使用Tomcat遇到的错误总结

文章目录Tomcat启动报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp提示过滤器异常其他Tomcat启动报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp1、检查自己编写的jsp文件或者index.jsp文件是否错误;我就是写错了index.jsp文件,导致无法编译成对应的servlet类导致这个问题;2、网上说jar包问题,参考:链接如果你是用的

2021-03-29 22:58:07 876

原创 LeetCode买卖股票系列总结(动态规划或者递归、进阶状态机)

题目合集逐一攻破LeetCode121. 买卖股票的最佳时机(简单)使用暴力枚举的方法超时,但是能通过大部分案例,复杂度为O(n2)。优化:看一下有哪些东西重叠了:要想获得最大收益,那起码得买入价格>卖出的价格。那么如果我们知道了卖出的价格,只要选择在这天(可以今天买入今天卖出)前比卖出的价格小的就行了,而在当前卖出的价格中最大收益必然是来自我们买入的最小股票价格。也就是说我们维护了一个表示在第i天卖出的股票之前买入股票的最小价格curMin:可以得到如下代码:class Solu

2021-03-27 22:44:12 376

原创 LeetCode61、旋转链表

题目描述https://leetcode-cn.com/problems/rotate-list/解法首先一看到这个题,我们就可以想到的想法:k的次数大过链表的长度k的次数小于链表的长度对应的做法。从本质上看,旋转一次就是:找到尾部结点和其上一个结点去除尾部结点,然后将该尾部结点头插法那么旋转K次就是进行旋转一次的K次调用:class Solution { public ListNode rotateRight(ListNode head, int k) {

2021-03-27 10:18:04 107

原创 LeetCode650、只有两个键的键盘(数学、因子、dp)

题目描述https://leetcode-cn.com/problems/2-keys-keyboard/解法单纯知道是动态规划,很难去思考它的递推过程。于是去看题解:我们就知道它是如何思考的,不同于四键键盘问题,四键键盘问题它的目标是求得最大的操作数,本质也是遍历所有可能情况的最大值,但是却很直观。这道题则比较绕,如果我们不知道可以分组思考的话,比较难做。class Solution { public int minSteps(int n) { int []dp =

2021-03-26 19:23:59 140

原创 LintCode867、四键键盘问题(dp数组的定义)

题目描述这道题在leetcode要会员,所以我去了lintcode做了。https://www.lintcode.com/problem/867/解法第一次解法第一次觉得挺好做的,于是写出来如下代码:public class Solution { /** * @param N: an integer * @return: return an integer */ public int maxA(int N) { // write y

2021-03-26 11:18:08 302 1

原创 LeetCode312、戳气球(难)

题目描述https://leetcode-cn.com/problems/burst-balloons/解法(动规)看了大概7、8分钟,没有思路。自己暴力的想法是n的阶乘级别,代码也难写。直接看题解,很巧妙,很惊叹。参考讲解:经典动态规划:戳气球直接上代码:class Solution { public int maxCoins(int[] nums) { if(nums==null || nums.length==0) return 0; if(num

2021-03-21 12:11:07 91

原创 LeetCode887、鸡蛋掉落(难)

题目描述https://leetcode-cn.com/problems/super-egg-drop/解法自己想不出来,题目看了也不是很理解。最后去看了题解分析。知道是要求无论f是在0<=f<=N的哪个值,给定的操作数都能把它找出来,则求出这个操作数的最小值。1、动态规划要知道的:如果只有一个鸡蛋,则只能一层一层,从底部往上面试,才能知道f的操作数,即if(k==1) return n;如果楼层为0,则不需要鸡蛋,我们就知道f = 0,操作数也是0,即if(n==0) ret

2021-03-20 11:18:09 131

原创 牛客网、最长递增子序列(要输出具体的序列)

题目描述解法重点:理解end数组和下标的含义:记录索引为i的长度为i+1的每个子序列最后一个元素的最小值,尽可能地使得子序列可以扩展,即end[i]表示的是所有长度为i+1的递增子序列中尾部元素最小的那个序列int[] end = new int[arr.length];int len=0;//end数组end[len]记录实际长度为len+1的字串的最小结尾元素int[] dp = new int[arr.length];//记录以i为结尾的子序列的最大长度import java.ut

2021-03-18 20:18:38 717

原创 牛客网、数组中相加和为0的三元组

题目描述解法第一次:利用三元组组成的整数范围属于-999到999来判断重复,使用一个标记数组register即可。然后对每个数,我们只需要找到两个数的和为0-该数即可。进而转化为两数之和的问题。两数之和,我们知道有双指针的解法,或者查一次哈希表的方法,但是哈希表可以建立在无序数组。双指针只能建立在有序的数组上。第一次我傻了,竟然使用哈希表:import java.util.ArrayList;import java.util.Map;import java.util.HashMap;

2021-03-18 12:38:06 366

原创 牛客网、找到字符串的最长无重复字符子串

题目描述解法我的解法(效率慢):import java.util.*;public class Solution { //利用一个哈希表来存储维护一个最长不重复的字串 //不存在的都存在里面 private Map<Integer,Integer> map = new HashMap<>(); /** * * @param arr int整型一维数组 the array * @return int整型

2021-03-17 17:39:48 284

原创 牛客网、合并区间

题目描述解法一定要按照开始时间升序排import java.util.Arrays;import java.util.ArrayList;import java.util.Comparator;/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interva

2021-03-17 17:28:02 177

原创 牛客网、缺失数字

题目描述(简单题)解法1、常规查找(线性)因为数组是有序的,所以它的下标就是它的值。public int solve(int[]a){ if(a==null || a.length<1) return 0; for(int i=0;i<a.length;i++){ if(a[i]!=i) return i; } return a.length;}时间复杂度O(n);2、二分查找import java.util.*;public class Solut

2021-03-17 16:01:29 93

原创 牛客网、判断二叉树是否是完全二叉树和BST

题目描述解法:判断BST的话需要:min<当前节点<max,同时其左右子树也满足相似的规则。判断完全二叉树,则需要按照层去判断,只要有一个节点存在:if(cur.left==null && cur.right!=null) return false;则不是完全二叉树。见代码:import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null;

2021-03-17 13:49:53 124

原创 牛客网、二叉树的之字形层级遍历

题目描述解法import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList&l

2021-03-17 09:17:00 110

原创 LeetCode10、正则表达式匹配(注意防止下标越位的问题)

做不出来,下标问题:class Solution { public boolean isMatch(String s, String p) { //dp[i][j]表示从s[0...i]匹配p[0...j]的结果 //这里要加1?则表示s 的前 i 个字符与 p 中的前 j 个字符是否能够匹配 boolean [][]dp = new boolean[s.length()+1][p.length()+1]; dp[0][0] = tr

2021-03-16 17:20:37 113

原创 牛客网、括号序列

题目描述解法:import java.util.*;public class Solution { int i = 0; /** * 利用栈匹配即可 * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here if(s==null) return false;

2021-03-15 20:55:52 115 1

原创 牛客网、设计LRU缓存结构

题目描述设计LRU缓存结构解决办法使用内置的数据:LinkedHashMap,其由hashmap和链表,链表负责维护最常使用和最久不使用的数据。import java.util.*;public class Solution { /** * lru design * @param operators int整型二维数组 the ops * @param k int整型 the k * @return int整型一维数组 */ p

2021-03-15 20:31:46 134

原创 LeetCode22、删除单链表的倒数第n个节点

题目描述https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/解法1、利用递归:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class So

2021-03-14 21:48:56 81

原创 LeetCode141、判断链表是否有环(注意不一定在头节点回环)

题目描述https://leetcode-cn.com/problems/linked-list-cycle/双指针解法/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */publi

2021-03-13 22:16:00 87

原创 LeetCode42、接雨水

题目描述https://leetcode-cn.com/problems/trapping-rain-water/解法解法一:超时无法AC(纵向遍历)从底部向上,计算每个层的积水,层数为最大的数,每次要维护一个start和endclass Solution { public int trap(int[] height) { //一层一层的计算 //维护一个层数,和计算的雨水 if(height==null ||height.length&l

2021-03-12 20:33:23 95

原创 LeetCode面试题17.14、最小K个数

题目描述https://leetcode-cn.com/problems/smallest-k-lcci/解法使用快排,然后根据输入的K,我们决定接下来递归哪一边:class Solution { public int[] smallestK(int[] arr, int k) { if(arr.length==0) return new int[0]; int []res = new int[k]; quickSort(arr,0,arr.

2021-03-11 20:41:51 109

原创 LeetCode45、跳跃游戏II(动态规划无法通过)

题目描述解法首先想到的是动态规划来做:维护一个dp[i]数组表示跳到下标为i时所需要的最少步数那么我们递推dp[i+1]时,只需要在前面的i个dp[i]里面寻找能够跳到坐标i+1的最小步数之和返回dp[nums.length]代码:class Solution { public int jump(int[] nums) { //状态:当前的位置i,要到达的位置j,使用的跳跃次数 if(nums==null || nums.length==0||num

2021-03-09 17:00:39 141

原创 LeetCode55、跳跃游戏(dp或者贪心)

题目描述https://leetcode-cn.com/problems/jump-game/解法思考使用dp来做的话,我们的dp数组定义为什么?变量是什么?每步跳跃,抵达的位置不同,每个位置能跳的步数也不同,我们如何定义dp?很明显我们用dp来表达每个位置能跳的步数,所以我们只能选择抵达的位置,于是得出dp[i]表示从0到i下标是否可以抵达思考递推,当前的dp[i]取决于之前的从之前的位置出发是否能抵达,我们需要维护一个变量来表示当前能抵达的最大下标,如果当前的下标在最大能抵达下标范围内(

2021-03-09 15:11:52 163

原创 LeetCode452、用最少数量的箭引爆气球(贪心选择区间调度)

题目描述https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons/解法同上一道题的本质。class Solution { public int findMinArrowShots(int[][] points) { //贪心选择,尽可能地一次射爆交叠最多的气球的坐标范围 //剩余不交叠的区间,一支射爆一个 //从可视化图上看,我们只需要求出最大不交

2021-03-09 11:56:16 97

原创 LeetCode435、无重叠区间(贪心选择区间调度)

题目描述https://leetcode-cn.com/problems/non-overlapping-intervals/解法贪心选择适合解决活动交叉的问题,使用的范围很小。这个问题,我们的贪心选择是:每次从剩余的活动里面选择不交叉的结束时间最早的活动。交叉的都剔除。class Solution { public int eraseOverlapIntervals(int[][] intervals) { //使用贪心算法里面的区间调度问题,每次选择当前活动集合里面结束

2021-03-09 11:41:49 102

原创 LeetCode518、零钱兑换II(完全背包问题)

题目描述https://leetcode-cn.com/problems/coin-change-2/解法完全背包问题,框架:确定状态,就是问题中的变量有哪些——1、不同种类的硬币;2、总金额数;3、所用硬币数目;然后根据题目,我们只需要使用前两个量就能描述出当前的问题,说明dp数组为二维,且两个维度分别对应1、2变量。dp数组下定义:dp[i][j]表示前i种硬币能凑出金额为j的方法数,严格相信这个定义确定递推过程:如果第i个硬币装得下,我可以选择不装,则dp[i][j] = dp[i-1

2021-03-09 10:50:30 221

原创 LeetCode416、分割等和子集(转化为0-1背包问题)

题目描述https://leetcode-cn.com/problems/partition-equal-subset-sum/解法(背包类型dp问题)官方题解开篇就是:还是老老实实做题吧:这是背包型dp问题,思考当前的问题里面,要描述的变量有哪些,比如物品数量,背包重量,是否能装满,也就是我们第一步要做的:要明确两点,「状态」和「选择」,它不同于子序列和字符串的问题了,而是描述一个子问题现象,对应的下标如dp[i][j]也不再是从s[i…j]的什么什么,而是i个物品里面选择装什么,能把容

2021-03-08 22:28:04 146

基于STC89C52(或者AT89C52)的水温加热控制系统

使用算法pid 仿真软件protues8.3还是9来着忘记了 keil4 51单片机编译

2022-02-09

Rexg2NFA.zip

正规式转NFA程序 平台:qt4.0,ubuntu18.04 语言:c++ 全中文注释过程。

2021-04-16

74LS194四路彩灯设计.ms14

用移位寄存器74194及必要的逻辑器件设计一个四路彩灯控制器,要求如下: (1)第1节拍:四路彩灯从左向右逐次渐亮,灯亮时间1s,共4s; (2)第2节拍:四路彩灯从右向左逐次渐灭,用时4s; (3)第3节拍:四路彩灯同时亮0.5s,然后同时变暗0.5s,进行4次,用时4s; (4)3个节拍一个循环,共需要12s。 重复(1)~(4).

2020-06-05

空空如也

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

TA关注的人

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