JZX 轻语

挖掘时光的细节

数据结构大作业:保卫萝卜公测版发布

这是你没有玩过的船新版本

“历经两个月的磨难,我们还是弄出了保卫萝卜,而且还是你从来没有玩过的船新版本。” 前言 本游戏基于Cocos2d-x 3.16引擎开发,采用C++11语言开发,实现了跨平台(Windows, Android, iOS),经验证可玩性还是可以的。 正文 当前游戏最新版下载地址: 安卓版 Android Version 或点击这个链接进行下载:Android V...

LeetCode 2962 - 统计最大元素出现至少 K 次的子数组

Flash 此文章属于Flash闪念部分的短文
滑动窗口的套路题目,窗口左侧每移动一位,右侧移到刚好满足条件,然后右侧后面所有的子数组都能满足条件,简单来说做法就是在每次(外层)循环中: 窗口左侧指针left向右移动一位; 窗口右侧指针right向右移动,直到窗口满足条件,此时所有以left为左端点、right直到n为右端点的子数组都满足条件; class Solution { publ...

LeetCode 2799 - 统计完全子数组的数目

Flash 此文章属于Flash闪念部分的短文
同样是滑动窗口的套路题目,窗口左侧每移动一位,右侧移到刚好满足条件,然后右侧后面所有的子数组都能满足条件。具体思路可以参考2962题。 class Solution { public: int countCompleteSubarrays(vector<int>& nums) { int ans {0}; unordered_...

LeetCode 2873&2874 - 有序三元组中的最大值 II

Flash 此文章属于Flash闪念部分的短文
比较套路的题目,我们可以使用两个变量来分别维护已枚举的前缀中的最大值和当前的最大差值。我们从左到右遍历数组,更新这两个变量,并在每次迭代中计算当前的最优解。最终返回结果即可。 class Solution { public: long long maximumTripletValue(vector<int>& nums) { long lon...

LeetCode 2716 - 最小化字符串长度

Flash 此文章属于Flash闪念部分的短文
挺简单的题目,按题目的操作,字符串中所出现的每个字母最终都会减少到1个,所以我们只需要统计字符串中不同字母的数量即可。 class Solution { public: int minimizedStringLength(string s) { vector<int> cnt_map(26, 0); for (const auto&a...

LeetCode 2140 - 解决智力问题

Flash 此文章属于Flash闪念部分的短文
动态规划题目,我们可以使用一个一维数组dp来记录从当前题目开始到最后一题的最大分数。从后往前遍历,对于每个题目,有两种选择:选择当前题目或者跳过当前题目。我们需要根据题目的分数和脑力消耗来更新dp数组。最终返回dp[0]即可。 不考虑边界条件的情况下,状态转移方程为:dp[i] = max(dp[i + 1], questions[i][0] + dp[i + questions[i][1...

LeetCode 2109 - 向字符串添加空格

Flash 此文章属于Flash闪念部分的短文
使用两个指针维护当前字符串s的索引和空格数组spaces的索引。我们从左到右遍历字符串s,如果当前s的索引等于空格数组中索引指向的位置,则在结果字符串中添加一个空格,并将空格数组的索引加一(往右移动到下一个需要加空格的地方)。按需处理完空格后,将当前字符添加到结果字符串中。最终返回结果字符串即可。 class Solution { public: string addSpace...

LeetCode 1863 - 找出所有子集的异或总和再求和

Flash 此文章属于Flash闪念部分的短文
简单的回溯模板题,在backtrace函数中,我们需要遍历所有可能的子集,并计算它们的异或和。我们可以通过递归来实现这个过程,每次递归时,我们有两个选择:选择当前元素或者不选择当前元素。最终,我们将所有子集的异或和相加,得到结果。 class Solution { public: int result {0}; vector<int> nums; i...

LeetCode 2502 - 设计内存分配器

Flash 此文章属于Flash闪念部分的短文
不难想,但实现起来还是需要注意很多细节。首先,我们需要一个链表来记录未使用的区块,每次分配内存时,我们需要遍历链表找到一个合适的区块。其次,我们需要一个哈希表来记录已使用的区块,以便于释放内存时能够快速找到对应的区块。最后,我们在释放内存时,将归还的内存作为一个新的区块插入到链表中,然后需要注意合并左右相邻的区块。 struct Node { Node* next; N...

LeetCode LCR 099 - 最小路径和

Flash 此文章属于Flash闪念部分的短文
经典动态规划题,就地使用grid数组记录到达每个位置的最小路径和,最后返回grid[m - 1][n - 1]即可。状态转移方程为: 如果r == 0 && c == 0(起始点),则grid[r][c]不变; 如果r == 0 && c != 0(第一行),则grid[r][c]加上grid[r][c - 1]; ...