自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day39动态规划part02| 62.不同路径 63. 不同路径 II 343. 整数拆分 (可跳过)96..不同的二叉搜索树 (可跳过)

本题大家掌握动态规划的方法就可以。数论方法 有点非主流,很难想到。

2024-06-26 22:22:11 284

原创 day38动态规划part01| 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要! 如果做过动态规划题目的录友,看我的理论基础 就会感同身受了。题目讲解 | 视频讲解动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的,例如:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到

2024-06-26 22:20:16 1150

原创 day36贪心算法part04|860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。

2024-06-12 21:44:44 381

原创 day32贪心算法part02| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

本题解法很巧妙,大家可以看题思考一下,在看题解。

2024-06-12 21:42:59 433

原创 day35贪心算法part03| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。自己的想法,也通过了。

2024-06-12 21:41:08 441

原创 day31贪心算法part01| 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

刚开始想到的,但是这样太暴力了,太笨了。

2024-06-10 23:00:35 858

原创 day30回溯算法part06| 332.重新安排行程 51. N皇后 37. 解数独

TODO。

2024-06-10 22:59:27 194

原创 day29回溯算法part05| 491.递增子序列 46.全排列47.全排列 II

本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。这题不能直接对初始的序列进行排序,然后去重。题意是要从这个序列里找非递减序列,排序就乱了这里的去重方法是通过,在for之前定义一个哈希表,在每个树层加入path之前先判断之前是否使用过。

2024-06-10 22:57:40 219

原创 day28回溯算法part04| 93.复原IP地址 78.子集 90.子集II

大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。子集问题,就是收集树形结构中,每一个节点的结果。整体代码其实和 回溯模板都是差不多的。这题就是使用了之前的去重策略,在树层上进行去重,如果前一个数已经使用过了,就跳过一个树枝。本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了。去重的时候要对数组进行排序,别忘记了。还是要熟悉这个回溯解题模板。

2024-06-10 22:55:58 450

原创 day27回溯算法part03| 39. 组合总和 40.组合总和II 131.分割回文串

本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制。

2024-06-10 22:54:25 428

原创 day25回溯算法part02| 216.组合总和III 17.电话号码的字母组合

这题自己参考前面组合总数的题目自己做出来的。

2024-06-01 15:24:22 344

原创 day24回溯算法part01| 理论基础 77.组合

其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。回溯的逻辑模板。

2024-06-01 15:23:46 269

原创 day23二叉树part09| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

好了,二叉树大家就这样刷完了,做一个总结吧。

2024-05-30 22:08:03 487

原创 day22二叉树part08 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

这里利用上了二叉搜索树的特性,从上到下遍历,最近的公共祖先一定是满足p->val <= root->val <= q->val的相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。

2024-05-29 21:26:53 654

原创 day21二叉树part07|530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。需要领悟一下二叉树遍历上双指针操作,优先掌握递归。

2024-05-29 21:25:11 673

原创 day20二叉树part06| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。这题在找最大值和最大值下标的时候用了两个库函数又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。

2024-05-28 22:13:12 606

原创 day18二叉树part05| 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。只需要在257题目上修改一小部分代码就能ac后两道题,直接把这三个题当模板题做。本题 又一次设计要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。112. 路径总和,和 113. 路径总和ii 一起做了。既然能求出所有路径了,那直接把所有路径的值求和然后和目标值匹配就行。本地递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。本题算是比较难的二叉树题目了,大家先看视频来理解。

2024-05-27 21:28:44 467

原创 day17二叉树part04 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

就是一颗根节点的左右两个子树的高度差绝对值不超过1。根据这个定义,有必要深刻理解一下高度和深度的定义,以下内容来自代码随想录:二叉树节点的:从的最长简单路径边的条数二叉树节点的:从的最长简单路径边的条数因为,而有的同学一定疑惑,为什么中求的是二叉树的最大深度,也用的是后序遍历。

2024-05-27 21:27:12 563

原创 day16二叉树part03 | 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

1.使用递归,主要思想是递归遍历左右子树,然后左右子树高度的最大值加1即为当前节点的高度。2.之前学习层次遍历的时候做过这题,直接在层次遍历的时候加上一个计数变量即可。

2024-05-26 19:54:35 477

原创 day15二叉树part02 | 层序遍历 10 226.翻转二叉树 101.对称二叉树 2

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

2024-05-26 19:53:56 515

原创 day14 | 二叉树part01-递归遍历 迭代遍历 统一迭代

前序遍历。

2024-05-22 13:28:27 487

原创 day13 | 239. 滑动窗口最大值 347.前 K 个高频元素 总结

栈与队列做一个总结吧,加油。

2024-05-22 13:27:57 400

原创 day11 | 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

这里if判断是数字不好判断,因为操作符的情况好写,所以else是数字的情况。

2024-05-19 14:59:20 283

原创 day09 | 28. 实现 strStr() 459.重复的子字符串 字符串总结 双指针回顾

在C语言中,把一个字符串存入一个数组时,也把结束符 '\0’存入数组,并以此作为该字符串是否结束的标志。a[i]!= '\0';i++) {在C++中,提供一个string类,string类会提供 size接口,可以用来判断string类字符串是否结束,就不用’\0’来判断是否结束。i++) {

2024-05-17 21:55:31 368

原创 day10 | 232.用栈实现队列 225. 用队列实现栈

【代码】day10 | 232.用栈实现队列 225. 用队列实现栈。

2024-05-17 21:54:51 381

原创 day08 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字 151.翻转字符串里的单词 卡码网:55.右旋转字符串

这两种写法都可以,都要理解。

2024-05-16 16:46:28 472

原创 day07 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

这题的思想和两数之和有点像,可以对比着看一下给定四个整数数组 nums1, nums2, nums3, 和 nums4,目标是找到满足 nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 的元组 (i, j, k, l) 的数量。

2024-05-14 23:03:22 356

原创 day06 | 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。什么时候想到用哈希法,。这句话很重要,大家在做哈希表题目都要思考这句话。

2024-05-14 23:01:47 527

原创 day04 _ 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

题目链接/文章讲解/视频讲解:第一种方法是卡哥的代码,如下图所示。但是我第一次想的和这种方法不一样,感觉一直用->next容易混乱。所以写了第二种方法第一次写的时候,把first和second放在了while外面,这样写不好。作用域:first 和 second 只在循环内部使用,因此将它们的定义放在循环内部能够限制它们的作用域,使得它们不会在循环外部被误用。初始化:在每次迭代开始时,需要重新确定 first 和 second 节点。将它们的定义放在循环内部能够保证它们每次都指向当前需要交换的节点。

2024-05-13 14:22:43 396

原创 day03 | 203.移除链表元素 707.设计链表 206.反转链表

文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html。题目链接/文章讲解/视频讲解:https://programmercarl.com/0707.%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.html。在原链表的基础上,先判断头结点,直到头结点符合条件,再判断整个链表。添加一个虚拟头结点,统一头节点和其他节点的操作,逻辑更清晰。

2024-05-11 22:40:37 286

原创 day02 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

文章讲解:https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html。文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html。只不过这种解法更像是一个窗口的移动,所以叫做滑动窗口更适合一些。

2024-05-10 09:56:40 820

原创 day01 | 704. 二分查找、27. 移除元素

看到两个条件要考虑一下二分法。

2024-05-08 21:22:09 245

原创 06-链表

【代码】06-链表。

2023-11-09 14:25:45 71 1

原创 05-函数指针、预处理、动态库、递归

一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针,函数名代表函数的入口地址。函数三要素: 名称、参数、返回值。C语言中的函数有自己特定的类型。函数指针写法: 返回值类型 + (指针变量名)(形参列表)

2023-11-09 14:24:14 76 1

原创 04-文件

【代码】04-文件。

2023-11-09 14:23:40 65 1

原创 03-数组和结构体

/ 这种最好理解,最常用// 3.直接定义数组指针// 语法 数组元素类型 (*数组指针变量名称) [元素个数]i < 5;i++) {// 1.先定义出数组的类型,在通过类型定义出数组指针// 这行代码使用 typedef 关键字创建了一个类型别名 ARRAY_TYPE,该// 别名表示了一个包含5个整数的数组类型// ARRAY_TYPE* arrP就是一个指针了, 指针指向包含4个int元素的数组 与 int(*p)[4] 等价。

2023-11-09 14:22:05 59 1

原创 02-指针强化

然而,这个操作是不合法的,因为字符串常量是不可修改的,尝试将其赋值给一个字符数组会导致未定义的行为。要修复这个问题,你可以将 buf 声明为字符数组,并初始化为字符串常量的内容,但是你需要确保数组大小足够容纳字符串以及一个 null 结尾字符 ‘\0’,因为 C 字符串必须以 null 结尾。可以不指定buf的大小,编译器会根据初始化字符串的长度自动分配足够的空间,而且字符串也会以‘\0’结尾。这里需要注意,获取文件行数之后,需要将文件光标置首,不然会影响后面的读。在主调函数中分配内存,被调函数使用。

2023-11-09 14:20:25 55 1

原创 01-内存分布

程序在加载到内存前,代码区和全局区(data和bss)的大小就是固定的,程序运行期间不能改变。栈是一种先进后出的内存结构,由编译器自动分配释放,存放函数的参数值、返回值、局部变量等。在程序运行过程中实时加载和释放,因此,局部变量的生存周期为申请到释放该段栈空间。存入的是全局未初始化变量和未初始化静态变量。未初始化数据区的数据在程序开始执行之前被内核初始化为 0 或者空(NULL)。该区包含了在程序中明确被初始化的全局变量、已经初始化的静态变量(包括全局静态变量和t)和常量数据(如字符串常量)。

2023-11-09 14:19:21 61 1

原创 09-标准文件

文本文件 : 存储时,是将字符的ascii值存在磁盘中,取的时候将数值(ascii)翻译成对应的字符。如果读取文件不是纯文本,有像-1这种数值,那么久不可以使用EOF(-1)作为文件的结尾。当打开一个文件时,系统会返回一个结构体,这个结构体有对此文件操作的所有信息。: 作用: 将光标移动到开头,和fseek(fp,0,SEEK_SET);二进制文件(例如图片): 存的是二进制,取的是二进制。只有带r的选项,如果文件不存在,则不创建文件。返回的文件流指针标识了打开的那个文件。带w选项的,打开时会清空文件。

2023-11-09 14:11:20 56 1

原创 08-复合类型

结构体的定义和初始化。

2023-11-09 14:09:11 64 1

空空如也

空空如也

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

TA关注的人

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