- 博客(12)
- 收藏
- 关注
原创 struct和union的区别和存储方式
结构体struct是存储多个数据对象的内存块,这些对象不重叠。union是一块内存,用于存储多个数据对象,但只能存储其中最大的一个,因此在任何时候只能存储一个数据对象。union和 struct 之间的主要区别在于 union 成员覆盖彼此的内存,因此 union 的 sizeof = 1 ,而 struct 成员一个接一个地分布在内存里(在可选的填充之间分布)。union也足够大以包含其所有成员,并且具有适合其所有成员的对齐方式。假设 int 只能存储在 2 个字节的地址并且是 2 个字节的宽度,而 l
2021-07-21 08:52:11
3767
原创 LeetCode 53 最大子序和 轻松学会Kadane算法
最大子序和LeetCode 53 力扣 53. 最大子序和文章目录最大子序和思路Kadane算法和代码优化更标准的算法解释代码优化易错点思路nums[0] 记录当前子串和;遍历按个加元素,如果加之后maxSum更大就更新其数值;遍历:如果 sum <= 0,那么后面的子序列肯定不包含目前的子序列,所以令sum = num如果sum > 0,加上当前元素能使后面的子序列和更大,所以sum += num let maxSum = 0; let sum = nums[
2021-05-10 00:01:25
170
原创 LeetCode 55. 跳跃游戏 I 贪心三种思路 + 动态规划
跳跃游戏 ILeetCode 55 力扣 55. 跳跃游戏动态规划时间复杂度 O(n2)O(n^2)O(n2), 空间复杂度O(n)O(n)O(n)数组记录当前元素是否可以到达,1表示可以到达,0表示不可到达状态转移:(dp[j] == 1) && (nums[j] >= i - j)时,dp[i] = dp[j];⚠️j要从后往前进行遍历,找到dp[i]的值后break,不然会超时 bool canJump(vector<int>& nums
2021-05-06 18:27:00
192
原创 LeetCode 73. 矩阵置零 题解
矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?第一种解法class Solution {public: void setZeroes(vector<vect
2021-04-27 23:51:10
250
原创 什么时候应该用C++ vector的.at()和[ ]?(优缺点和越界访问时二者的区别)
最主要的区别就是.at()会额外检查访问是否越界,如果越界,会抛出exception,所以使用.at()时程序运行速度较慢。二者优点一般来说用[]效率更高,尤其是需要对索引值进行复杂的计算或者单纯不需要检查是否越界时。更好的做法是默认用.at(),这样代码尽管很慢但不会产生bug;[]更适合对程序效率要求比较高的场景。[]缺点索引值越界时程序不会报错,但会一路莽下去,在向量非空的情况下,即使下标越界,也有可能对应的内存是可读写的,至于读到的是什么内容,或者写到什么地方,就是随机事.
2021-04-27 14:00:31
5013
4
原创 n数之和问题 I (LeetCode 三数之和)
三数之和等于零的组合排列LeetCode 三数之和 (中级算法1)给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <
2021-04-26 23:35:22
182
原创 老妈子级别大白话从零讲解LeetCode 10. Regular Expression Marching (HOT 100)
这两天翻了很多题解,思路讲解方面总是要么不够清楚要么有些许漏洞,不易于像我这样的新手理解;现在终于弄明白解题思路了,详细整理一下,希望能让更多的朋友少走弯路。整理了递归和动态规划两种解法的思路,C++代码实现;动规运行时间4ms,84.63%,内存 6.2 MB,94.82%。
2021-04-21 15:38:29
160
原创 C++ 关于 single linked list 单链表的创建和执行(头尾节点,考虑动态存储和内存泄漏问题)(2)
基于带头尾节点的单链表实现的选择排序selection_sort(), 去掉重复节点remove_duplicates(), 在默认已经排好序的链表里插入新节点 insert_ordered(), 用 << 操作符打印链表等方法。
2021-04-09 23:45:41
105
原创 PAT (Basic Level) Practice C 1025 反转链表 C++
1025 反转链表给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即最后不到 K 个元素不反转。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数 N (≤10^5)、以及正整数 K (≤N),即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用 −1 表示。接下来有 N 行,每行格式
2021-04-09 23:28:34
128
原创 C++ single linked list 单链表的创建和执行(有头尾节点,考虑动态存储和内存泄漏等问题)(1)
这是C++ programming II这门课布置的一个小作业,核心是关于动态存储和指针的理解(尤其是new和delete的使用);花了不少时间,中途来csdn找资料也没有看到相关内容的经验分享,所以来写篇博文记录一下成果和心得。代码旁有简单的注释,中英夹杂;不重要的我没有翻译,有问题的话欢迎评论留言。
2021-02-26 09:14:30
439
2
原创 如何生成一个简单的 makefile 文件
在程序文件夹里新建一个文件named “makefile” or “Makefile”write down these codes:program_name: 你想创建的object files nametab+command(link object files to create an executable file named with program name)1st_object_file_name: name.cpptab+command(g++ -c name.cpp)..
2021-02-26 08:21:04
451
原创 已解决:尝试在Mac上加密外部USB闪存驱动器时报错 “A GUID Partition Table (GPT) Partitioning Scheme Is Required“
在尝试在18版MacBook Pro上boot Ubuntu到移动硬盘时,因为忘记把硬盘的format改成MS-DOS(FAT),flash成功之后MacBook提示无法读取硬盘,出现了这样的错误提示:在terminal/终端里输入命令行diskutli repairDisk /dev/disk1之后出现以下报错信息:A GUID Partition Table (GPT) partitioning scheme is required.Google了一下,发现这个问题与我的disk patiti
2021-02-11 12:14:40
2866
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人