
DS & Algo
文章平均质量分 60
ShuoO-24
想成为造梦师的小白。
展开
-
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 · 261 阅读 · 0 评论 -
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 · 306 阅读 · 0 评论 -
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 · 330 阅读 · 0 评论 -
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 · 210 阅读 · 0 评论 -
老妈子级别大白话从零讲解LeetCode 10. Regular Expression Marching (HOT 100)
这两天翻了很多题解,思路讲解方面总是要么不够清楚要么有些许漏洞,不易于像我这样的新手理解;现在终于弄明白解题思路了,详细整理一下,希望能让更多的朋友少走弯路。整理了递归和动态规划两种解法的思路,C++代码实现;动规运行时间4ms,84.63%,内存 6.2 MB,94.82%。原创 2021-04-21 15:38:29 · 239 阅读 · 0 评论 -
C++ single linked list 单链表的创建和执行(有头尾节点,考虑动态存储和内存泄漏等问题)(1)
这是C++ programming II这门课布置的一个小作业,核心是关于动态存储和指针的理解(尤其是new和delete的使用);花了不少时间,中途来csdn找资料也没有看到相关内容的经验分享,所以来写篇博文记录一下成果和心得。代码旁有简单的注释,中英夹杂;不重要的我没有翻译,有问题的话欢迎评论留言。原创 2021-02-26 09:14:30 · 491 阅读 · 2 评论 -
C++ 关于 single linked list 单链表的创建和执行(头尾节点,考虑动态存储和内存泄漏问题)(2)
基于带头尾节点的单链表实现的选择排序selection_sort(), 去掉重复节点remove_duplicates(), 在默认已经排好序的链表里插入新节点 insert_ordered(), 用 << 操作符打印链表等方法。原创 2021-04-09 23:45:41 · 146 阅读 · 0 评论 -
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 · 158 阅读 · 0 评论