练习解析
文章平均质量分 85
富春山居_ZYY(已黑化)
╭( ′• o •′ )╭☞就是这个人!
展开
-
关于树形dp问题的解决
从二叉树的某个节点 X 触发,可以向上走,也可以像下走,但是途经的节点不可重复经过,到达另一个节点 Y 时路径上的节点个数被认为是节点 X 到节点 Y 的距离(包含节点 X、Y),那么二叉树任何两个节点之间都会有距离,求整个树上的最大距离。求得该子树是否为平衡二叉树后,需要求得该子树的高度,其高度就是左右子树高度的最大值加一,为 root 节点的父节点提供信息(如果此时的 root 节点并不是题目提供的树的头结点的话)派对的快乐值就是参加派对的员工的快乐值的累加。原创 2022-12-17 16:34:04 · 527 阅读 · 2 评论 -
滑动窗口的最大值【滑动窗口问题】
接下来滑动窗口就要向右开始滑动了,L 和 R 都要向右开始移动一格,下标 0 过期了,如果队首是下标 0,那就该出队列了,如果不是,那无事发生。此时,2 下标的对应的值 5,比 1 下标对应的值 3 大,因此下标 1 从队尾弹出,下标 0 也是如此,遵守这样的规定,依次遍历。终于,R >= size - 1,表示窗口正式形成了,此时队首的下标对应的元素就是当前窗口的最大值,添加到返回列表当中。,双端队列,顾名思义,就是一个队列,并且在该队列中元素可以从队尾添加删除获取,也可以从队头添加删除获取。原创 2022-12-16 16:14:31 · 802 阅读 · 4 评论 -
最长回文子串问题(Manacher算法)
如上图的字符串 str,"cabbac"是一个回文串,字符串长度为偶数,关于一条虚轴对称,"abbacabba"也是一个回文串,字符串长度为奇数,关于字符 ‘c’ 对称。,因为特殊字符相当于是一个虚轴的存在,辅助功能,不管算哪个位置的回文子串,特殊字符只可能和特殊字符进行比对,所以不会对原来的字符比对有影响,自然也不会影响到最后的结果。不难想到,求回文子串,我们会让每个字符以其为中心,向两边扩散,如果字符两端的字符相等并且没有超过字符串长度限制就扩,条件不成立了就表示求出了以该字符为中心的回文子串。原创 2022-12-15 21:38:04 · 507 阅读 · 3 评论 -
字符串匹配问题(KMP算法)
首先分析匹配过程(KMP 方法),在整个匹配过程中,str1 中的 x 变量是不会回退的(str1 不动),而 str2 中的 y 变量在匹配失败时是会向左回退的(相当于将 str2 向右推),直到在滑动的过程中匹配成功,循环结束,或者滑到最右,仍然匹配失败,循环结束。发现 x 位置和 y 位置上的字符仍然不一样,这个时候的已匹配前缀为 “a”,该字符串的最长前缀(后缀)可匹配子串不存在了,长度为 0,那么将 y 移动到 str2 的 0 下标上,x 位置和 y 位置的字符继续进行比较。原创 2022-12-13 11:31:56 · 504 阅读 · 7 评论 -
字符串匹配算法(BF&RK)
例如 “abbc”,“abb” 的哈希值是 5(旧的哈希值),下一个要计算哈希值的字符串是 “bbc”,实际上就是在原来的字符串中减掉字符 ‘a’,加上字符 ‘c’,所以新的哈希值就是 7(5 - 1 + 3)3)str2 向后移动一格,对应到的 str1 的字符串 "abb"的 hashcode 为 5,相等,进行精确比较,“abb”.equals(“abb”),返回 true,匹配成功,返回 2。如果 str1 的长度为 N,str2 的长度为 M,那么最坏情况下,时间复杂度为。原创 2022-12-12 16:39:33 · 705 阅读 · 5 评论 -
N皇后问题详解
此时的 pos 值有 5 个 1,代表只有这 5 列还可以放皇后,通过 pos & (~pos + 1) 就可以求的最右侧的 1的权值(lastOneIndex),将皇后放到此处,pos 减去权值,直到 pos 为 0 说明 5 个放皇后的地方都尝试过了,累加摆放数。在第 i 行寻找放皇后的位置时,将会依次从第 0 列尝试到第 n-1 列,尝试着将皇后放在坐标 (i,j)上,如果 set1 中没有包含 j,set2 中没有包含 i+j,set3 中没有包含 i-j,皇后放置成功。原创 2022-12-01 10:22:27 · 3688 阅读 · 6 评论 -
刷题集:美国节日
文章目录一、题目介绍二、思路概况三、详细过程四、代码书写牛客链接:美国节日一、题目介绍和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同。具体规则如下:1月1日:元旦1月的第三个星期一:马丁·路德·金纪念日2月的第三个星期一:总统节5月的最后一个星期一:阵亡将士纪念日7月4日:美国国庆9月的第一个星期一:劳动节11月的第四个星期四:感恩节12月25日:圣诞节现在给出一个年份,请你帮忙生成当年节日的日期。输入描述:输入包含多组数原创 2022-03-31 14:25:47 · 844 阅读 · 18 评论 -
【Java】极易理解的青蛙跳台阶
文章目录初级青蛙跳台阶分析思路代码实现升级青蛙跳台阶分析思路代码实现初级青蛙跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。青蛙跳台阶分析思路青蛙跳台阶,经典递归问题,依旧的大事化小方法。当青蛙只跳一级台阶时显而易见,只有一种跳法,跳一级当青蛙跳两级台阶时两种方法跳两次一级和一次跳两级当青蛙跳三级台阶时三种方法第一步跳一级的情况下,剩下的两级台阶有两种跳法第一步跳两级的情况下,剩下的原创 2021-08-19 20:37:33 · 294 阅读 · 4 评论 -
【Java】极易理解的汉诺塔
前言数学分析这是一个非常经典的递归问题,想要知道64个圆盘的移动方法,便要从移动更少量的圆盘入手,找到其中的规律。假设三根石柱分别为A柱、B柱、C柱A柱上只有一个圆盘时A柱上有两个圆盘时A柱上有三个圆盘时从上面的移动方法我们可以看出一个圆盘,需要移动1次两个圆盘,需要移动3次三个圆盘,需要移动7次大胆找出规律,N个圆盘需要移动2N - 1次设想一下,如果真的要将64个圆盘按照规定的那样移动,那就需要移动264 - 1次。众所周知,指数函数是呈爆发型增长。如果婆罗门一秒原创 2021-08-18 17:27:08 · 327 阅读 · 7 评论 -
“单身狗”问题
文章目录初级进阶这里将主要运用异或运算符(^)解决这一类问题该运算符的规则是:将参加运算的两个数进行二进制的转换,再对照位进行运算,两个二进制同号,则结果为0;异号,则结果为1。根据这一规则,可以总结出以下结论:0异或任何数,其结果等于任何数1异或任何数,其结果等于任何数取反任何数异或自己,其结果为零初级一个整型数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。例如数组为{1,3,5,7,1,3,5},找出7。最佳解法:根据异或运算符得原创 2021-07-25 16:48:32 · 159 阅读 · 2 评论