news 2026/10/13 14:48:14

排序|倒序遍历|set

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
排序|倒序遍历|set

10.02

sort+hash分组

class Solution {
/*
变位分组
输入:["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
*/
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
int n=strs.size();
vector<vector<string>> ret;
unordered_map<string,vector<string>> hash;
for(auto& s:strs)
{
string t=s;
sort(t.begin(),t.end());
hash[t].push_back(s);
}
for(auto& [a,b]:hash)
{
ret.push_back(b);
}
return ret;
}
};

lc2017

算两行前缀和,遍历第一个机器人下移的列,取第二个机器人能拿的左右区域最大值里的最小值。

class Solution {
public:
long long gridGame(vector<vector<int>>& grid) {
/* 1、此题的目标是让乙的分数最小,所以甲的最优策略并不是自己先获取一个最大分数。
2、从乙的角度考虑,我们发现其实甲拿完以后,乙只有两个选择:要么横向走到底,再往下走;要么第一步往下走,再横向走到底
3、发现这个结论就好办了,遍历甲每一个向下的位置,同时求乙的分数,取最小值即可 */
int i, size = grid[0].size();
vector<long long> presum0(size, 0), presum1(size, 0);

getPresum(grid, presum0, presum1);
long long minSum = presum0[size - 1] - grid[0][0];

for (i = 1; i < size; ++i) {
minSum = min(minSum, max(presum0[size - 1] - presum0[i], presum1[i - 1])); //1的后缀 0的前缀 取最大
}

return minSum;
}

void getPresum(vector<vector<int>>& grid, vector<long long>& presum0, vector<long long>& presum1) {
int i, size = grid[0].size();

presum0[0] = grid[0][0];
presum1[0] = grid[1][0];

for (i = 1; i < size; ++i) {
presum0[i] = presum0[i - 1] + grid[0][i];
presum1[i] = presum1[i - 1] + grid[1][i];
}
}
};

lc2375

d倒序填充

遇到连续降序段就倒着填数,升序段顺着填数,拼出最小字典序的数字串

class Solution {

public:

string smallestNumber(string pattern) {

int n = pattern.size();

string res(n+1,'a');

int num = 1; // 从1开始填充数字

int i = 0;

while (i <= n)

{

if (i < n && pattern[i] == 'D') {

// 找到连续'D'的结束位置

int j = i;

while (j < n && pattern[j] == 'D')

j++;

// 倒序填充当前D段(长度为j-i+1)

for (int k = j; k >= i; k--) {

res[k]='0' + num;

num++;

}

i = j + 1; // 跳过已处理的D段

}

else

{

// 处理'I'或末尾,直接填充

res[i]='0' + num;

num++;

i++;

}

}

return res;

}

};

lcp52

  • 逆序遍历操作
  • set 的有序性快速定位区间节点
  • 染红时累加计数
  • 处理后立即删除避免重复统计,确保每个节点只按最后一次操作计算颜色。

class Solution {
public:
int getNumber(TreeNode* root, vector<vector<int>>& ops) {
set<int> s;
auto dfs = [&](this auto&& dfs,TreeNode* node)
{
if (!node) return;
dfs(node->left);
s.insert(node->val);
dfs(node->right);
};
dfs(root);
int ret = 0;
for (int i = ops.size() - 1; i >= 0; --i) {
int type = ops[i][0];
auto l = s.lower_bound(ops[i][1]), r = s.upper_bound(ops[i][2]);
if (type == 1)
ret += distance(l, r);


s.erase(l, r);
}
return ret;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 20:13:12

pq|dfs|快排

lc1985简单题 简单做上堆/快排也行按字符串长度降序、长度相同则按字典序降序排序数字字符串数组&#xff0c;返回第 k 大的元素。class Solution { public:string kthLargestNumber(vector<string>& nums, int k) {sort(nums.begin(), nums.end(), [](string s1, …

作者头像 李华
网站建设 2026/10/7 5:52:53

GLM-4.7 MiniMax M2.1 实测上线:AI Ping 喊你免费体验国产大模型 “硬实力”

【前言】国产大模型又上新 “战场” 了&#xff01;12 月 23 日&#xff0c;清程 AI Ping 平台正式开放GLM-4.7与MiniMax M2.1两款旗舰模型的免费实测 —— 这俩可是当前国产模型在 “工程交付” 与 “Agent 长效运行” 赛道的代表性选手&#xff0c;直接瞄准真实场景的 “长期…

作者头像 李华
网站建设 2026/10/11 9:57:53

python+vue美特超市进销存管理系统_91crh

目录 已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 已开发项目效果实现截图 同行可拿货,招校园代理 pythonvue美特超市进销存管理系统_91crh 开发技术路线…

作者头像 李华
网站建设 2026/10/12 6:44:51

AI论文写作工具Top9:开题报告生成与降重功能详细测评

AI写论文平台排名&#xff1a;9个实测&#xff0c;开题报告论文降重都好用工具对比排名表格工具名称核心功能突出优势Aibiye降AIGC率适配高校规则&#xff0c;AI痕迹弱化Aicheck论文降重速度快&#xff0c;保留专业术语Askpaper论文降重逻辑完整性好秘塔写作猫智能降重结合语法…

作者头像 李华
网站建设 2026/10/9 2:09:34

9个AI论文辅助平台深度测评,开题报告生成和降重功能强大

AI写论文平台排名&#xff1a;9个实测&#xff0c;开题报告论文降重都好用 工具对比排名表格 工具名称 核心功能 突出优势 Aibiye 降AIGC率 适配高校规则&#xff0c;AI痕迹弱化 Aicheck 论文降重 速度快&#xff0c;保留专业术语 Askpaper 论文降重 逻辑完整性好 …

作者头像 李华
网站建设 2026/10/7 7:39:38

nvcr.io 登录方法

docker login nvcr.io用户是固定的&#xff0c;不是某个人的用户Username: $oauthtoken Password: NGC_API_KEY密码是NGC_API_KEY申请NGC_API_KEY方法&#xff1a;访问正确的位置&#xff1a;登录 NVIDIA NGC 官网。https://catalog.ngc.nvidia.com/进入个人设置&#xff1a;点…

作者头像 李华