- 博客(26)
- 问答 (7)
- 收藏
- 关注
原创 代码随想录算法训练营19-回溯1
画出来的树是这样记录所有组合,一个变量current装当前的处理结果,一个res装所有的处理的结果下面的代码还可以剪枝优化。
2024-08-22 10:56:53 1031
原创 代码随想录算法训练营18
涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。
2024-08-16 14:17:41 326
原创 代码随想录算法训练营17
抓住关键,二叉搜索树,因此只要从上往下遍历到第一个在p和q之间的节点,由于题目保证了p和q一定存在,因此这个结点一定就是p、q的最近公共祖先为什么要保证从上到下的第一个?如果从下往上的话,像下图中的3会被返回更深层次的分析的话,判断条件只看node和p、q之间的大小关系,并不看位置关系,因此需要靠遍历的方向来确保位置满足条件用前序遍历来实现从上到下遍历假设p < q,设计递归函数。
2024-08-12 23:51:25 722
原创 代码随想录算法训练营16
想起上一篇说的,二叉搜索树的中序遍历是一个递增的数列设计递归函数,作用是在中序遍历的过程中不断更新最小绝对差。没有返回值。
2024-08-11 13:12:08 327
原创 代码随想录算法训练营15
这种感觉每次都在做相同的事情,一层一层的,可以用递归设计递归函数是,有返回值,返回的是根据arr构建的最大二叉树。现在列出所有可能产生返回值的情况还是一样,可以用下标而不是每次重新构建数组,这样会更快。
2024-08-10 11:07:41 273
原创 代码随想录算法训练营14
用层序遍历很简单,这里讲递归。怎么判断是最后一行?深度最深的叶子节点就是最后一行 -> 记录一个maxDepth和targetVal,每次遍历到叶子结点就比较currentDepth和maxDepth,怎么判断是最左边的?每次递归保证左节点优先处理,这样就能保证左节点最先拿到最大的maxDepth,这样根据上面,就能保证即使遍历到最后一行的其他叶子结点,targetVal也不会被覆盖(因为写的是才会更新targetVal)遍历顺序用什么?
2024-08-09 10:06:22 675
原创 代码随想录算法训练营13
递归函数是,这个递归函数有返回值,返回值是一个数字,如果以node为根节点的子树不是平衡二叉树,返回-1,如果是,则返回以node为根节点的子树的高度。
2024-08-07 00:18:41 567
原创 代码随想录算法训练营12
整颗二叉树翻转 -> 从下往上依次翻转子树的左右节点结合之前翻转字符串哪些,我总感觉这些翻转一类的题目就是局部翻转最终形成整体翻转这道题主要就是要理解递归法为什么不能用中序我把递归的方法invertTree(Node)的含义写作:交换以Node为根节点的树的左右节点那么假如中序遍历可以,那么伪代码应该就是。
2024-08-03 11:56:17 956
原创 代码随想录算法训练营11
遇到数字则入栈;遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。注意,取操作数的时候,先弹出右操作数,再弹出左操作数。
2024-07-31 13:55:03 238
原创 代码随想录算法训练营第八天|344. 反转字符串、541. 反转字符串 II、151. 反转字符串中的单词
没啥好讲的,犹豫一秒都是对卡哥的不尊重。
2024-06-06 01:50:44 302
原创 代码随想录算法训练营第七天|454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和
这道题暴力解法就是四个for循环嵌套,时间复杂度为n4但是这么写的话就得两次for遍历A、B+两次for遍历C、D+额外遍历一次map1/map2,而卡哥这么写就不用额外遍历一次map为什么要2+2分组?因为1+3分组的话时间复杂度就是n3为什么想到用哈希表呢?我感觉这道题有种根据目标,拿着A去问B有没有的那种感觉,所以可以用哈希表。不过卡哥说这道题是哈希表经典题目,那就记住吧。为什么能用哈希表?因为不需要去重。当然要去重的题目哈希表也可以做,就是比较麻烦为什么要用Map?
2024-06-04 00:32:17 545
原创 代码随想录算法训练营第六天|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
有范围可以用数组,没范围用set啥的主要是复习Java的字符串操作以及各种小技巧。
2024-06-02 00:35:09 236
原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II
24.两两交换链表中的节点题目链接/文章讲解/视频讲解: https://programmercarl.com/0024.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.html19.删除链表的倒数第N个节点。
2024-05-30 18:06:10 749
原创 代码随想录算法训练营第二天| 977.有序数组的平方 、209.长度最小的子数组、59.螺旋矩阵II
977.有序数组的平方视频讲解:209.长度最小的子数组59.螺旋矩阵II。
2024-05-24 00:09:20 397 1
原创 【重新学java】1 数据类型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。布尔类型不能进行数据类型转换,因此多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算。数据类型为char,用单引号表示,java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节。float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。
2023-10-01 00:45:01 91
原创 【考研C语言】指针
内存区域中的每字节都对应一个编号,这个编号就是“地址”。如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元。按变量地址存取变量值的方式称为“直接访问”,如printf(“%d"i);等;另一种存取变量值的方式称为“间接访问”,即将。在 C 语言中,指针变量是一种特殊的变量,它用来存放变量地址。指针变量存放的地址中存放的数据是什么类型,基类型就必须也是相同的类型。指针与指针变量是两个概念,一个变量的地址称为该变量的“指针”。例如,地址 2000 是变量的指针。
2023-02-21 20:08:38 148
原创 【C语言】小知识点——scanf中的%c
就是OK的,因为3被%d读取到了,3和x之间的空格也被"%d %c"之间的空格匹配上了,所以从标准缓冲区中删掉了,然后剩下的x就被%c匹配到了。所以为了避免出现这种情况,如果要读取%c的时候看看需不需要清空标准输入缓冲区。然后如果同时接收多个输入的时候混着%c的时候就要注意,比如说。我们的本意是让程序读取一个数字和一个字符,然后你输入。这一句了,我们发现变量a存的是10没问题,但是。所以执行上面那一段程序的时候发生了这么些事情。遇到如下代码的时候会有这个现象。,然后发现程序已经流过。,那么x里面就是空格。
2022-12-20 00:49:48 4087
原创 【2022/8/27】Qt自制C语言IDE——界面设计
由于我们只有十天不到,那很明显从头设计一个全新的UI是不合理的,所以我作为写界面的人,就打算找一个参考。第二个方面我感觉是各种精致的小图标,就像下图,给我的感觉就像男人穿搭提升逼格的方法之一就是在配饰上下功夫,比如说尾戒、帝国领针、波罗带…刚刚搞完东软那边的医疗检测项目,又开始搞学校这个自制C语言IDE项目,我曾经是不相信“小学期学的比一年都多”这句话的,现在我有点信了…注意这个属性类面的数值,初始化的时候有几个数字,就代表Layout里面有多少个控件,然后你修改之后的数字个数必须和最开始的一致。...
2022-08-28 00:25:13 1645 1
空空如也
WPS加载项报Network Error
2023-04-06
如何关闭Amazon Web Service免费套餐
2023-03-28
如何打包Antlr生成的词法分析器
2023-03-18
码蹄集MT2042硬币塔
2023-03-05
码蹄集运行Java代码报错
2023-03-03
DOSbox如何测量程序运行花费的时间?
2023-02-27
驱动科技 服务器无法安装Anaconda
2022-08-09
python中为何一定要用切片添加
2022-03-01
关于#平衡二叉树#的问题,如何解决?(语言-python)
2022-03-01
C语言最近对问题测试用例过不去
2021-10-31
如何在缩放与布局125%的情况下量准距离
2021-08-31
我在Mathpix识别出来的文字复制到mathtype中显示为乱码
2021-08-14
为什么代码确定是对的但是电脑上就是运行不出来?
2021-03-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人