自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++学习篇------指针小结

是很久很久没有碰C++了,上次用可能还是大一的时候,重新看起C++ Primer Plus。这次来先简单讲讲指针指针是C++很重要的一个东西,指针是一个变量,其存储的是值的地址,而不是值本身。int a = 5;int* b = &a; //b就是int a的地址(&为取址符)1、声明指针指针是有类型的,可以知道这个指针指向的类型是占字节,从而分配地址空间。(虽然指向的类型不同,可以是char,可以是double,但str和ptr两个变量本身的长度相同,这两个地址的长

2021-06-03 14:53:58 192

原创 链表虚拟头结点的设置 LeetCode_24

LeetCode_24 两两交换链表中的节点因为头结点会发生变化,返回时找到头结点是关键。这就可以引入虚拟头结点:设置 Node dummyNode 指向当前头结点,再令一个preNode = dummyNode。public ListNode swapPairs(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy;

2021-05-17 21:19:17 188

原创 LeetCode_76最小覆盖子串(滑动窗口)

题目来源:LeetCode_76(该题应该是滑动窗口中比较难的题了)这题乍一看应该是用滑动窗口做,但仔细想想中间有很多比较难想的点。首先我们想到:应该用滑动窗口,保持left不动,向右移动right,移动一次就判断窗口内的子串是否满足要求。若不满足要求,则继续移动,满足要求的话就向右移动left,不断缩小子串长度,同时判断是否满足要求。等移动left到不满足要求了,就再移动right。其中有几个点比较难想:1.如何判断子串是否满足包含t。2.如何找到最短值,和对应的子串针对1. 可以建立一个M

2021-05-15 22:44:45 154

原创 KMP算法详解(LeetCode_28)

今天做了LeetCode_28,题目如下图所示。首先我想到的是朴素算法,将needle串的每个字母与haystack串去进行逐一比较,代码如下。public int strStr(String haystack, String needle) { int len_hay = haystack.length(); int len_need = needle.length(); if(len_need==0){ return

2021-05-13 15:10:22 186

原创 LeetCode_740 删除并获得点数(动态规划)

题目来源:LeetCode_740 删除并获得点数第一眼看到这个题目的确就会想到打家劫舍问题,隔壁的屋子不能连续偷。就想着拿二维数组记录数字和他对应出现的次数。然后动态转移方程就是dp[n] = dp[n-1] + 对应的数字数量 (nums[n] != nums[n-1]+1)max{dp[n-2]+对应的数字数量, dp[n-1]}.public int deleteAndEarn(int[] nums) { Set<Integer> set = new Hash

2021-05-05 19:48:36 53

原创 LeetCode_554砖墙(哈希表)

题目来源:LeetCode_554砖墙首先我想到的是将[1,2,2,1]转化为[1,3,5,6]其中1-6没有的数字就是穿过会碰到砖块的位置e.g 2,4。所以所以行中哪个数字出现的次数最多,那个就是碰到砖块次数最少的位置。我们用哈希表来记录第n列会出现的次数。注意要去掉最后一列,他是每次都会出现的。得到的结果是所有行数-出现的最多次数。public int leastBricks(List<List<Integer>> wall) { Map<In

2021-05-02 20:59:39 80

原创 LeetCode_633平方数之和(双指针)

题目来源:LeetCode_633今天这题很快就写出来了,因为今天在进入LeetCode时候不知道哪里瞟到了一眼双指针,看完题目以后就直接用双指针的想法,很快就做出来了。左指针从0开始,右指针从Math.Sqrt©开始(注意要强制转换成int型)对左指针和右指针的平方和与c进行比较,如果小于就令左指针+1,如果大于就令右指针-1,循环得到结果。public boolean judgeSquareSum(int c) { int right =(int) Math.sqrt(c);

2021-04-28 16:34:13 69

原创 JDK1.8 or JDK8傻傻分不清楚

接触java的第一步大家肯定都是从下载JDK开始,现在网上JDK版本众多,上Oracle官网一看最新的版本号已经到JDK16了往下一拉还有JDK8的,我记得我最开始是按照教程下载了一个jdk1.8。但你这版本更新就算是坐火箭也不可能那么几年就从1.8每次加0.1加到16吧,我就去查了一下java的发展史,究竟是什么命名规则。 Sun公司最早在1992年开发了一种“Oak”的面向对象语言,最开始是想用于硬件,但不被硬件生产商所感兴趣,后转应用于万维网,研发出能将小程序嵌入到网页中执行的技...

2021-04-25 15:31:54 21741 3

原创 LeetCode_377 组合总和四(类似凑硬币 动态规划)

题目来源 LeetCode_377 组合总和四一看就会马上想到01背包问题,但仔细一想顺序不同的序列为不同组合,那么与01背包还有些不一样。我们令f[len][target]为目标求解同时有显而易见的初始条件(有效值):f[0][0] = 1f[0][0]=1。那么对任意的 f[len][target] 而言,组合中的最后一个数字可以选择 nums 中的任意数值,因此 f[len][target]应该为以下所有方案总和:最后一个数选择 nums[0],方案数为 f[len][targ

2021-04-24 23:12:39 141

原创 LeetCode_368 最大整除子集 (动态规划)

题目来源:LeetCode_368 最大整除子集这题一开始没做出来,但是想到应该是用动态规划来做,稍微看了一下答案后做出来了。令数组f[i]记录nums数组前i个数组成的集合的最大整除子集如何计算f[i]:1、首先将nums数组排序,从小到大排序,这样子如果j>i,只要考虑nums[j] % nums[i] == 0就可以了2、计算f[i]时,遍历nums的前i个,看是否存在nums[i] % nums[j] == 0的情况 若存在找个变量max记录下来 max = f[j]+

2021-04-23 21:03:54 165

原创 KPM算法详解(Next数组)

由LeetCode_28引发的思考最开始用了剪枝思想的朴素解法虽然做出来了,在看答案的时候发现了有一种叫KMP的算法专门就是解决快速查找匹配串问题的,进行了深入的学习。下面的图源自@宫水三叶的解答我们有两个字符串,在原串中寻找是否有匹配串。先来说说朴素解法:从匹配串的第一个字符到原串中找,若找到就看第二个是否也相同依次对比,等不相同的话再原串中找下一个与第一个字符相同然后重复之前的操作。而KPM算法不同的是不再从头匹配,寻找到匹配成功串的最大公共前后缀,将前缀移到后缀位置。然后我们的目标就

2021-04-22 21:03:49 1155

原创 LeetCode_91 解码方法(动态规划)

题目来源:LeetCode_91这题很明显可以分两种情况,一个一个解码和两个两个解码,采用双串dpdp[i]为前i个字符串能有多少种解码方式:1、一个一个解码dp[i] = dp[i-1] (注意s(i)不能为0)2、两个两个解码dp[i] = dp[i-2] (注意s(i-1)不能为0 且两位数要小于等于26)最后将两种可能性对应相加就能得到答案。代码如下:public int numDecodings(String s) { int len = s.length();

2021-04-22 15:56:41 83

原创 01背包,动态规划问题

题目来源:牛客01背包是一道很典型的二维数组动态规划问题动态规划的关键就是把状态转移方程写好,该题dp[n][V]代表前n件物体在背包容量为V时可以装的最大容量dp[i][j]有两种可能,第一种就是第i个物体可以放进容量为j的背包中dp[i][j] = Math.max(dp[i-1][j-Vi]+Wi,dp[i-1][j]) 可以选择放i或者不放i,取最大值第二种情况就是第i个物体放不进容量为j的背包中dp[i][j] = dp[i-1][j]动态规划不要忘记边界条件:

2021-04-22 14:31:56 63

原创 记录一下转码的学习过程

记录一下转码的学习过程本硕福建不知名大三本,仪器科学与工程学院,漫漫转码路。 今年开学后不知道为什么氛围就变成了见面第一句你找实习了吗,这也让我开始压力山大,可能是环境太安逸了吧,自从保研以后就没有很努力学习过了,也没有把找工作认真的当作一件事情来做,只是有要转码的想法,一直没有拿起计算机方面的书去看去学。不能再这样堕落下去了,开始记录转码学习的二三事。...

2021-04-21 11:21:22 471 1

空空如也

空空如也

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

TA关注的人

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