自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Y-puyu 的博客

日拱一卒,功不唐捐。

  • 博客(93)
  • 收藏
  • 关注

原创 [M双指针] lc80. 删除排序数组中的重复项 II(双指针+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:80. 删除排序数组中的重复项 II2. 题目解析时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public: int removeDuplicates(vector<int>& nums) { int len = 0; for (int i = 0; i < nums.size(); i++) {

2020-12-30 23:32:39 113

原创 [Mdfs] lc79. 单词搜索(二分+双指针+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:79. 单词搜索2. 题目解析代码:class Solution {public: bool exist(vector<vector<char>>& board, string word) { if (board.empty() || board[0].empty()) return false; int m = board.size(), n = board[0].s

2020-12-30 23:29:31 146

原创 [Mdfs] lc78. 子集(二进制枚举+排列类型枚举+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:78. 子集2. 题目解析代码:class Solution {private: vector<vector<int> >res;public: vector<vector<int> > subsets(vector<int> &S) { // IMPORTANT: Please reset any member data you decl

2020-12-30 23:28:32 299

原创 [Mdfs] lc77. 组合(组合类型枚举+题目总结+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:77. 组合2. 题目解析代码:class Solution {public: vector<vector<int>> combine(int n, int k) { dfs(temp,n,k,0); return res; }private: vector<vector<int>> res; vector<int>

2020-12-30 23:26:03 222

原创 [H哈希] lc76. 最小覆盖子串(双指针+哈希)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:76. 最小覆盖子串2. 题目解析代码:// 双指针class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.empty() || matrix[0].empty()) return true; int n = matrix.size

2020-12-30 23:23:58 268

原创 [M双指针] lc75. 颜色分类(双指针+思维+脑筋急转弯)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:75. 颜色分类2. 题目解析时间复杂度:O(logn)O(logn)O(logn)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public: void sortColors(vector<int>& nums) { sort(nums.begin(), nums.end()); }};...

2020-12-30 23:14:56 148

原创 [M二分] lc74. 搜索二维矩阵(二分+双指针+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:74. 搜索二维矩阵2. 题目解析前导题:[有趣的算法思维] 2. 杨氏矩阵思维与两数之和 II - 输入有序数组(杨氏矩阵深度剖析)杨氏矩阵+二分。从左下角或者右上角开始即可。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public: bool searchMatrix(vector<vector<int>>& m

2020-12-29 23:29:04 169

原创 [M模拟] lc73. 矩阵置零(模拟+思维)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:73. 矩阵置零2. 题目解析纯思维题。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public: void setZeroes(vector<vector<int>>& matrix) { bool flag = false; int m = matrix.size(), n = mat

2020-12-29 23:28:00 148

原创 [C和指针] ch15. 输入 / 输出函数

第十四章:预处理器GitHub 链接:ch14. 预处理器C 语言宏用的很多很多,看看 stdio.h 等各种头文件或者开源项目中的应用就懂了,各种宏定义,坑点也是蛮多的,需要学习并注意。本章总结及注意点部分课后习题解答14.9 问题以前竟然不知道…在 demo01.c 中把本章大大小小的点简单敲了敲。这 5 个宏确实蛮好用的。具体可见参考答案:见名知意。方便修改、维护。考查 __FILE__ 宏及 __LINE__ 的使用,以及参数转字符串的方法, 参数前加 # 即可

2020-12-29 21:32:43 309

原创 [Hdp] lc72. 编辑距离(线性dp+状态划分+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:72. 编辑距离2. 题目解析前导题:[线性dp] 编辑距离(模板题+编辑距离模型)最经典的 dp 题之一了吧。上面的前导题已经讲解的很清楚了!时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: int minDistance(string a, string b) { int n = a.size(),

2020-12-29 21:31:12 150

原创 [M模拟] lc71. 简化路径(模拟+栈)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:71. 简化路径2. 题目解析这种模拟加字符串处理问题真的挺吓人的…一定要理清楚思路,一开始这只能面向测试用例编程了…我觉得笔记写的蛮详细的,配合代码使用更佳!时间复杂度:O(n)O(n)O(n)。空间复杂度:O(n)O(n)O(n)代码:class Solution {public: string simplifyPath(string path) { string res, name;

2020-12-29 20:31:17 103

原创 [C和指针] ch14. 预处理器

第十四章:预处理器GitHub 链接:ch14. 预处理器C 语言宏用的很多很多,看看 stdio.h 等各种头文件或者开源项目中的应用就懂了,各种宏定义,坑点也是蛮多的,需要学习并注意。本章总结及注意点部分课后习题解答14.9 问题以前竟然不知道…在 demo01.c 中把本章大大小小的点简单敲了敲。这 5 个宏确实蛮好用的。具体可见参考答案:见名知意。方便修改、维护。考查 __FILE__ 宏及 __LINE__ 的使用,以及参数转字符串的方法, 参数前加 # 即可

2020-12-29 19:34:21 228

原创 [C和指针] ch13. 高级指针话题

第十三章:高级指针话题GitHub 链接:ch13. 高级指针话题指针是 C 语言的最精华所在了,指针与内存连接,使用得当堪比汇编!!!本章内容值得反复研读,查阅资料对比阅读!本章总结及注意点部分课后习题解答13.9 问题很强的问题。当时做的时候错了 d,e,g,i,j,l 脑子怕是不太好使…与所有指针算法一样,值 1 被缩放到指针所指向的对象的大小,在本例中是指向字符的指针。结果是 ptr 指向数组的下一个元素,即 ptr+1=&array[1]。其实现在 ptr

2020-12-29 19:32:31 316 7

原创 [C和指针] ch12. 使用结构和指针

第十二章:使用结构和指针GitHub 链接:ch12. 使用结构和指针结构和指针创造了无数伟大的数据结构!本章总结及注意点部分课后习题解答12.7 问题当然可以。把有 current 的地方全部换成 *list,就行了。虽然少用了一个变量,但是增加了思维难度,不好理解,没啥大用途。我觉得很好用啊,dummy->next = head; 这样不知道简化了多少代码和思维量。然而书中确实给出了最优的解法,但是 root 节点不就是 dummy 节点吗?真的不清楚纠结这两者区别有啥用

2020-12-28 23:29:41 804

原创 [C和指针] ch11. 动态内存分配

第十一章:动态内存分配GitHub 链接:ch11. 动态内存分配非常常用且重要!!!本章总结及注意点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jyki8cTM-1609154167306)(https://raw.githubusercontent.com/Y-puyu/picture/main/images/20201227155242.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WQWG0Z98-16091541

2020-12-28 23:23:19 333

原创 [Edp] lc70. 爬楼梯(dp+递推)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:69. x 的平方根2. 题目解析二分即可。注意不要使用二分的第二个模板,因为使用第二个模板会造成输入 8 输出 3 的尴尬局面。因为 if (mid >= x / mid) r = mid;时间复杂度:O(n)O(n)O(n)。空间复杂度:O(n)O(n)O(n)代码:// 中间值转 ll 取巧,判断越界class Solution {public: int mySqrt(int x) { int

2020-12-28 23:21:20 97

原创 [E二分] lc69. x 的平方根(二分+边界处理)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:69. x 的平方根2. 题目解析前导题:[E二分] lc35. 搜索插入位置(二分+经典+详细分析)二分即可。注意不要使用二分的第二个模板,因为使用第二个模板会造成输入 8 输出 3 的尴尬局面。因为第二模板 找不到 会停在第一个比它大的位置。当前所用的二分模板,会停在最后一个小于它的数字。基于上面的理论,开根大多都是小数,我们应该取这个小数左边的这个比它小的整数,而不是右边比它大的整数。所以不要使用第二个模板。时间复杂度:O(

2020-12-28 22:50:57 134

原创 [H模拟] lc68. 文本左右对齐(模拟+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:68. 文本左右对齐2. 题目解析这个字符串处理的模拟题,还挺常见的。题目抽象下来就三种情况,其中笔记上的第一行是问题分析。这个比 65 题有价值多了…这种模拟题写写也能大程度的锻炼下自己的工程能力和设计能力。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(n)O(n)O(n)代码:class Solution {public: vector<string> fullJustify(vector&lt

2020-12-28 21:12:09 119

原创 [E模拟] lc67. 二进制求和(模拟+高精度)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:67. 二进制求和2. 题目解析前导题:[高精度+模板] 高精度整数加、减、乘、除模板。[E模拟] lc66. 加一(模拟+高精度)就是高精度加法。模板题。在此针对 t 进位的处理很巧妙,因为 t 最后进位一定是 1,且进位的数也是 1,这个写法很巧妙!其中高精度乘法也是这个思想和做法!时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public:

2020-12-28 20:11:10 198 1

原创 [E模拟] lc66. 加一(模拟+高精度)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:66. 加一2. 题目解析前导题:[高精度+模板] 高精度整数加、减、乘、除模板。就是高精度加法。模板题。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:class Solution {public: vector<int> plusOne(vector<int>& digits) { reverse(digits.begin(), d

2020-12-28 19:52:34 138

原创 [H模拟] lc65. 有效数字(模拟)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:65. 有效数字2. 题目解析这题大可不必做!!!实话。实现 stof() 函数。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: int minPathSum(vector<vector<int>>& grid) { int n = grid.size();

2020-12-28 19:37:01 173

原创 [Mdp] lc64. 最小路径和(dp+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:64. 最小路径和2. 题目解析前导题:[Mdp] lc62. 不同路径(dp+组合)经典的 dp 问题了。最大路径、最小路径,两个方向、四个方向啥的。思路同前两题一致,初始化 f 数组时要给最大值。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: int minPathSum(vector<vector<i

2020-12-28 12:58:32 156

原创 [Mdp] lc63. 不同路径 II(dp+组合)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:63. 不同路径 II2. 题目解析前导题:[Mdp] lc62. 不同路径(dp+组合)思路和上题一样,将有障碍物的地方的方案数看作 0 即可。它不能到达即无法转移,即方案数为 0。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: int uniquePathsWithObstacles(vector<vector

2020-12-28 12:58:17 103

原创 [Mdp] lc62. 不同路径(dp+组合)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:62. 不同路径2. 题目解析经典的 dp 问题,也可归结到组合数问题。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:// 常规class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> f(n, vector<int>(m))

2020-12-27 20:44:16 138

原创 [M模拟] lc61. 旋转链表(链表+模拟+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:61. 旋转链表2. 题目解析好题!链表的题画图就完事了。代码没啥过多的细节,看笔记即可。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), ne

2020-12-27 20:21:23 110

原创 [H数学] lc60. 排列序列(数学+数位dp+库函数)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:60. 排列序列2. 题目解析前导题:[Mbfs] lc54. 螺旋矩阵(bfs+方向数组)一模一样,老题了。不再解释。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vec

2020-12-27 19:52:48 120

原创 [C和指针] ch10. 结构和联合

第十章:结构和联合GitHub 链接:ch10. 结构和联合结构体很重要,在后续的链表、二叉树,OJ 题目的数据存储等都广泛应用到。本章总结及注意点部分课后习题解答10.10 问题成员可以是不同类型,其按名称来访问,并非连续存储,有边界要求。而数组元素必须是同一类型,按下标访问,连续存储,边界对其元素。结构名为一个标量,作右值时,表示存储在结构中的值,作左值时,表示结构存储的内存位置。数组名为一个常量指针,其仅能作右值表示指向数组第一个元素的指针,不可以作左值。以往写的大

2020-12-27 19:25:23 254

原创 [C和指针] ch09. 字符串、字符和字节

第九章:字符串、字符和字节GitHub 链接:ch09. 字符串、字符和字节本章比较基础,介绍了字符串相关函数,但实现方式却只字未提。毕竟这是一个入门级的书,可以理解。面试过程中,不论是 strlen() 函数还是 memcpy() 函数等等都是面试手写的大热点,这点需要额外注意。本章总结及注意点部分课后习题解答9.13 问题我个人感觉,是缺点。把各种事物混到一起或许效率能够大大提高,但出错几率也随之上升。就现代编程语言看来,语法的孤立性是很重要的。即一件事情就对应一种解决方法就行了

2020-12-27 19:20:33 224

原创 [C和指针] ch08. 数组

第八章:数组GitHub 链接:ch08. 数组本章总结及注意点部分课后习题解答8.7 问题问题是个好问题,但是,ints 数组下标 0 对应的是 10,1 对应的是 20…大意了啊。参考答案:运算符优先级不同。第二个等价于 array[j] + i。不能。因为指针指向数组左边界的前一个位置了,数组越界,赋值是非法的。不想写这个转换了,不过回文字符串的判断还是蛮重要的。参考答案:绝大多数都是下标…参考答案:书上讲解的很清楚了,关于汇编不做实验了。和

2020-12-27 19:16:24 375

原创 [C和指针] ch07. 函数

第七章:函数GitHub 链接:ch07. 函数函数式编程,面向过程。本章总结及注意点部分课后习题解答7.10 问题可在其内部打印一句话,表示它已被调用。我认为,没有半毛钱优点…严格的规范,学起来才简单。参考答案:它的一个优点是它允许您变得懒惰;可以编写的代码更少。其他的后果,比如能够用错误的参数数或类型调用函数,是所有缺点。最终值将转换为 A 类型。return ; 可以,但是不能 return 表达式; 编译器将报错。返回值将被按照 int 类型进行解释

2020-12-27 19:10:31 264 3

原创 [C和指针] ch06. 指针

第六章:指针GitHub 链接:ch06. 指针C 语言的精华及难点。本章总结及注意点部分课后习题解答6.17 问题通过中间编译器,编译器来判断,并创建合适的指令,机器来执行这些指令即可。内存无法提前预知,此操作意义非常之小,书上已经给了详尽说明。该值为一个整数,且没有取地址这个符号,则编译器就不生成对应指令,故无法将其解释为地址。书上讲了。因编译器而异,可能是 0,也能直接崩溃。一定要避免对空指针解引用。我觉得是没有,但是很明显,考虑的过于片面…参考答案:

2020-12-27 17:44:00 661

原创 [C和指针] ch05. 操作符和表达式

第五章:操作符和表达式GitHub 链接:ch05. 操作符和表达式本章总结及注意点部分课后习题解答5.8 问题值为 2.0,类型 float根据编译器而异。第一个函数的调用可能在乘法前,也可能在乘法后。具体可看:不清楚。个人一般在算法题中被二进制数相关题目疯狂乱秀!参考答案:它们通常用于对设备控制器进行编程,以设置或测试特定的位位置。如果有人有其他好的答案,请发邮件给我 kar@cs.rit.edu!速度相当。if ((year % 4 == 0 &amp

2020-12-27 17:39:13 300 1

原创 [C和指针] ch04. 语句

第四章:语句Github 链接:ch04. 语句第四章貌似没有作者给出的源码。本章总结及注意点部分课后习题解答4.13 问题合法。可以正确执行,但是对程序不造成任何影响。这些操作符均不具有副作用,计算结果没有赋给任何变量。事实上 C 没有 赋值语句。赋值是用赋值运算符表达式语句完成的。如 a = b + c;合法。确实没这样用过。代码块中定义局部变量,可将这些变量的访问及生存周期限制在本代码块中。想来也是一个很不错的操作!使用空语句。或者修改代码逻辑,见 demo01

2020-12-27 17:33:07 319

原创 [C和指针] ch03. 数据

第三章:数据第三章貌似没有作者给出的源码。本章总结及注意点部分课后习题解答3.13 问题见 demo01.c 即可。包含了 <limits.h> 后自行查看即可。也可以直接去查看 <limits.h> 中到底是怎样定义的。见 <float.h> 中的定义即可。很实用啊,真正的见名知意。warning 警告。只要能放下也无所谓。否则,根据各个编译器自己的规矩来,可能溢出,可能直接丢弃高阶位,这些情况都是有可能的。精度丢失。warn

2020-12-26 21:37:06 486

原创 [C和指针] ch02. 基本概念

第二章:基本概念有关于 ch2 中给的打印歌词的 神一样的 样例程序源码,在 supporting_src 文件夹中的 ch2 的 mystery.c 文件即是,我在后面附上了代码运行结果。本章总结及注意点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oslxTcTx-1608988642183)(https://raw.githubusercontent.com/Y-puyu/picture/main/images/20201209202608.png)]部分课后

2020-12-26 21:25:02 489

原创 [C和指针] ch01. 快速上手

第一章:快速上手GitHub 链接:ch01 快速上手有关于 ch01 中一开始给的样例程序源码,在 supporting_src 文件夹中的 ch01 的 rearrang.c 文件即是。本章总结及注意点部分课后习题解答实际上第一章都围绕一个程序展开,但是我没怎么细看这个程序…不太习惯这个码风。1.7 问题提高程序可读性方便修改、维护。如果在不同文件均独立存在一个拷贝,代码修改后都得一一修改,太麻烦。见名知意。且规范使用大写命名格式,很容易知道这就是个 #define 常

2020-12-26 21:16:16 1189

原创 [C和指针] 0. 《C和指针》读书笔记及课后题解汇总

C和指针该专栏收录了学习《C和指针》书中的大大小小的练习题和个人的学习笔记。一开始本来只想放在 GitHub 上作为自己复习用,但是确实学习过程中比较细致的做了大量笔记和练习,其中不乏许多纰漏和错误,希望能够被各位同学指出,找到错误,共同进步!GitHub 博文地址:Pointers On C。其中包括 源码、pdf 电子图书、英文版答案,供大家学习!相关博文、笔记电子书及英文版答案[C和指针] 1. 赋值运算符函数(编程语言、细节处理、代码优化)[剑指-Offer] 2. 实现S

2020-12-26 21:16:05 3379 3

原创 [Mbfs] lc59. 螺旋矩阵 II(bfs+方向数组)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:59. 螺旋矩阵 II2. 题目解析前导题:[Mbfs] lc54. 螺旋矩阵(bfs+方向数组)一模一样,老题了。不再解释。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(n2)O(n^2)O(n2)代码:class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<

2020-12-26 20:56:25 214

原创 [E双指针] lc58. 最后一个单词的长度(双指针+经典)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:58. 最后一个单词的长度2. 题目解析简单题,做法很多。stringstream 可以做。正常的就是双指针做法了,也是经典的处理以空格间隔的输入数据的一种方式。注意尾部的连续空格即可。最优的还是双指针从后往前遍历。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(1)O(1)O(1)代码:// 双指针,从前往后遍历class Solution {public: int lengthOfLastWord(string

2020-12-26 20:46:48 80

原创 [M贪心] lc55. 跳跃游戏(dp+贪心+思维)

文章目录1. 题目来源2. 题目解析1. 题目来源链接:55. 跳跃游戏2. 题目解析前导题:[H贪心] lc45. 跳跃游戏 II(dp+贪心+思维)本题是前导题的简化版,针对该题有结论:自开始到能跳到的最远位置都是连续的。这个很好想也在上题证过了,如果不连续的话,那么这个不能到达的点的右边一个点是能到达的,那么右边点一定是从这个不能到达点的前面跳过来的,所以这个不能到的点也一定可以被跳到,则矛盾。那么可以顺序遍历数组元素,针对点 i,其作为起跳点,能跳到 i+nums[i] 的位置,那

2020-12-26 18:02:45 135

算法题单-适用ACM、NOI、NOIP训练

资源名称:算法题单-适用ACM、NOI、NOIP训练 内容概要:ACM 训练题单,从0到1,涵盖各大OJ平台,有大量题目可供针对性练习。 适用人群:ACM、NOI、NOIP、算法爱好者。 目标:提高算法能力,比赛争金夺银。

2023-08-13

空空如也

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

TA关注的人

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