<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Pepsi3333的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Pepsi3333</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Pepsi3333]]></copyright><item><title><![CDATA[C++关于构造函数的一点小思考]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/110202497</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/110202497</guid><author>Pepsi3333</author><pubDate>Fri, 27 Nov 2020 11:52:43 +0800</pubDate><description><![CDATA[C++关于构造函数的一点小思考
构造函数在OOP中是一些的基石，是一个类生成对象所要调用的第一个函数。
当类对象被创建时，编译器为对象分配内存空间，同时构造函数被调用。
构造函数和类名保持一致，它没有返回值，同时也不能被声明为void类型。通常，构造函数被用来对类的数据成员进行初始化。

...]]></description><category></category></item><item><title><![CDATA[C++编程练习 矩阵模板类的实现]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109675977</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109675977</guid><author>Pepsi3333</author><pubDate>Fri, 13 Nov 2020 15:53:06 +0800</pubDate><description><![CDATA[C++编程练习 矩阵模板类的实现
前言
通过自定义模板实现了一个矩阵及其运算的Matrix类，并重载了+ - * += -= *= [] 等运算符，但是没有实现列表初始化方式的构造函数。
本文编写的代码可以用来学习使用，涉及到的知识点有模板、构造函数、拷贝构造、虚函数、动态内存分配、运算符重载等等，对初学C++的朋友来说是极好的练手。
代码编写过程中借鉴了https://blog.youkuaiyun.com/m0_37772174/article/details/83018940的代码，这篇文章中还实现了矩阵的行变换]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.1356二进制数字1排序]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109531359</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109531359</guid><author>Pepsi3333</author><pubDate>Fri, 06 Nov 2020 14:51:58 +0800</pubDate><description><![CDATA[题目描述
根据数字二进制下 1 的数目排序
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
如果存在多个数字二进制中 1 的数目相同，则必须将它们按照数值大小升序排列。
请你返回排序后的数组。
示例 1：
输入：arr = [0,1,2,3,4,5,6,7,8]
输出：[0,1,2,4,8,3,5,6,7]
解释：[0] 是唯一一个有 0 个 1 的数。
[1,2,4,8] 都有 1 个 1 。
[3,5,6] 有 2 个 1 。
[7] 有 3 个 1 。
按照]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.349 两个数组的交集]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109456748</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109456748</guid><author>Pepsi3333</author><pubDate>Mon, 02 Nov 2020 20:30:30 +0800</pubDate><description><![CDATA[题目描述
给定两个数组，编写一个函数来计算它们的交集。
示例 1：
输入：nums1 = [1,2,2,1], nums2 = [2,2]
输出：[2]
示例 2：
输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出：[9,4]
说明：
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

来源：力扣（LeetCode）
题解
利用集合来求解
class Solution {
public:
    vector&lt;int&gt; intersectio]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.234回文链表]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109366516</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109366516</guid><author>Pepsi3333</author><pubDate>Thu, 29 Oct 2020 18:52:22 +0800</pubDate><description><![CDATA[题目描述
请判断一个链表是否为回文链表。
示例 1:
输入: 1-&gt;2
输出: false
示例 2:
输入: 1-&gt;2-&gt;2-&gt;1
输出: true
进阶：
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题？
来源：力扣（LeetCode）
题解
先用递归将一个指针移至链表尾，另一个指针指向链表头，同时向中间移动。
class Solution {
public:
    bool res = true;
    ListNode* cur;
    bool isP]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.1 两数之和]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109335682</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109335682</guid><author>Pepsi3333</author><pubDate>Wed, 28 Oct 2020 16:12:34 +0800</pubDate><description><![CDATA[题目描述
给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
来源：力扣（LeetCode）
题解
暴力解法
class Solution {
public:
    vector&lt;in]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录NO.1207 独一无二的出现次数]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109327325</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109327325</guid><author>Pepsi3333</author><pubDate>Wed, 28 Oct 2020 10:18:45 +0800</pubDate><description><![CDATA[题目描述
给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
示例 1：
输入：arr = [1,2,2,1,1,3]
输出：true
解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
示例 2：
输入：arr = [1,2]
输出：false
示例 3：
输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出：true
提示：
1 &lt;]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.1365 有多少小于当前数字的数字]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109292508</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109292508</guid><author>Pepsi3333</author><pubDate>Mon, 26 Oct 2020 16:37:38 +0800</pubDate><description><![CDATA[目录题目描述题解
题目描述
给你一个数组 nums，对于其中每个元素 nums[i]，请你统计数组中比它小的所有数字的数目。
换而言之，对于每个 nums[i] 你必须计算出有效的 j 的数量，其中 j 满足 j != i 且 nums[j] &lt; nums[i] 。
以数组形式返回答案。
示例 1：
输入：nums = [8,1,2,2,3]
输出：[4,0,1,1,3]
解释：
对于 nums[0]=8 存在四个比它小的数字：（1，2，2 和 3）。
对于 nums[1]=1 不存在比它小的数字。
]]></description><category></category></item><item><title><![CDATA[C++学习日志 指针常量与常量指针]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109231563</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109231563</guid><author>Pepsi3333</author><pubDate>Thu, 22 Oct 2020 22:59:51 +0800</pubDate><description><![CDATA[引言
在C/C++中，指针一直是编程语言的灵魂所在，指针的灵活性给编程带来了无限的可能性，但是也给初学者带来了噩梦。
本文以一个初学者的视角的看待指针常量和常量指针的区别，以及在完全无法理解的情况下，可以使用的一些技巧。
问题引出

如上图所示，这里定义了一个指针p指向变量x。
int x = 5;
int* p = &amp;x;

常量指针与指针常量
这里很容易理解，x和p是变量，其中p是指针，指向x，p中存储了内存区域中x所在的地址。
那么如果x是一个常量呢？也就是：
const int x = 5;]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录NO.763 划分字母区间]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109224398</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109224398</guid><author>Pepsi3333</author><pubDate>Thu, 22 Oct 2020 16:47:08 +0800</pubDate><description><![CDATA[目录题目描述题解解题思路代码
题目描述
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段，同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。
示例 1：
输入：S = “ababcbacadefegdehijhklij”
输出：[9,7,8]
解释：
划分结果为 “ababcbaca”, “defegde”, “hijhklij”。
每个字母最多出现在一个片段中。
像 “ababcbacadefegde”, “hijhklij” 的划分是错误的，因为划分的片段数较]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.844 比较退格字符]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109169508</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109169508</guid><author>Pepsi3333</author><pubDate>Mon, 19 Oct 2020 21:28:01 +0800</pubDate><description><![CDATA[目录题目描述题解
题目描述
给定 S 和 T 两个字符串，当它们分别被输入到空白的文本编辑器后，判断二者是否相等，并返回结果。 # 代表退格字符。
注意：如果对空文本输入退格字符，文本继续为空。
示例 1：
输入：S = “ab#c”, T = “ad#c”
输出：true
解释：S 和 T 都会变成 “ac”。
示例 2：
输入：S = “ab##”, T = “c#d#”
输出：true
解释：S 和 T 都会变成 “”。
示例 3：
输入：S = “a##c”, T = “#a#c”
输出：true
]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.19删除链表的倒数第N个节点]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109156481</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109156481</guid><author>Pepsi3333</author><pubDate>Mon, 19 Oct 2020 11:04:09 +0800</pubDate><description><![CDATA[LeetCode刷题记录 NO.19删除链表的倒数第N个节点
题目描述
给定一个链表，删除链表的倒数第 n 个节点，并且返回链表的头结点。
示例：
给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2.
当删除了倒数第二个节点后，链表变为 1-&gt;2-&gt;3-&gt;5.
说明：
给定的 n 保证是有效的。
进阶：
你能尝试使用一趟扫描实现吗？
来源：力扣
解题思路
最直接的思路，遍历链表，获取长度L，再遍历到第L-N+1个节点，将其删除，需要遍历两遍。
如果只遍历一]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.116 填充右侧指针]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109103164</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109103164</guid><author>Pepsi3333</author><pubDate>Thu, 15 Oct 2020 19:09:10 +0800</pubDate><description><![CDATA[填充每个节点的下一个右侧指针题目描述解题思路代码
题目描述
给定一个完美二叉树，其所有叶子节点都在同一层，每个父节点都有两个子节点。二叉树定义如下：
struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针，让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点，则将 next 指针设置为 NULL。
初始状态下，所有 next 指针都被设置为 NULL。

来源：力扣
解题思路
运用递归，如]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录NO.24 交换链表节点]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/109051647</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/109051647</guid><author>Pepsi3333</author><pubDate>Tue, 13 Oct 2020 15:17:07 +0800</pubDate><description><![CDATA[LeetCode刷题记录NO.24 交换链表节点
题目描述
给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。

提示：
链表中节点的数目在范围 [0, 100] 内
0 &lt;= Node.val &lt;= 100

来源：LeetCode
基本思路
迭代
直接观察可以知道，每交换一次链表，实际上涉及到四个数据的操作，如

1-&gt;2-&gt;3-&gt;4

交换之后为

2-&gt;1-&gt;4-&gt;3

具体步骤：]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录 NO.141&142 环形链表]]></title><link>https://blog.youkuaiyun.com/Pepsi3333/article/details/108999334</link><guid>https://blog.youkuaiyun.com/Pepsi3333/article/details/108999334</guid><author>Pepsi3333</author><pubDate>Sat, 10 Oct 2020 16:53:13 +0800</pubDate><description><![CDATA[LeetCode刷题记录 NO.141&amp;142 环形链表
题目概述
给定一个链表，判断链表中是否有环。
如果链表中有某个节点，可以通过连续跟踪 next 指针再次到达，则链表中存在环。 为了表示给定链表中的环，我们使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。 如果 pos 是 -1，则在该链表中没有环。注意：pos 不作为参数进行传递，仅仅是为了标识链表的实际情况。
如果链表中存在环，则返回 true 。 否则，返回 false 。
示例：

输入：head = [3,2,]]></description><category></category></item></channel></rss>