news 2026/6/23 21:23:46

滑窗+hash|pii dfs

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
滑窗+hash|pii dfs

lc2423

// try -- every char

一个变量控制不明白 那就再加一个变量🤓👆🏻

++cnt; // restore

class Solution {

public:

bool equalFrequency(string word)

{

unordered_map<char,int> hash;

for(auto& c:word)

hash[c]++;

// try -- every char

for(auto& [ch, cnt] : hash)

{

--cnt;

bool f=true;

int t = 0; //freq

for(auto& [k, v] : hash)

{

if(v == 0) continue;

if(t == 0) t = v; // init

if(v != t)

{

f=false;

break;

}

}

if(f) return true;

++cnt; // restore

}

return false;

}

};

lc549

pii dfs遍历二叉树

记录每个节点“递增连续长度up”和“递减连续长度down”

计算以该节点为中心的最长连续序列长度

最终得到整棵树的最长连续序列

"递"获取每个node pii

"归"的时候return以该节点为中间的最长链

class Solution {

public:

int ans = 0;

int longestConsecutive(TreeNode* root) {

auto dfs = [&](this auto&& dfs, TreeNode* node) -> pair<int, int> {

if (!node) return {0, 0};

auto [lu, ld] = dfs(node->left);

auto [ru, rd] = dfs(node->right);

int u = 1, d = 1;

if (node->left && node->val == node->left->val + 1) u = max(u, lu + 1);

if (node->right && node->val == node->right->val + 1) u = max(u, ru + 1);

//record two path choice mx

if (node->left && node->val == node->left->val - 1) d = max(d, ld + 1);

if (node->right && node->val == node->right->val - 1) d = max(d, rd + 1);

ans = max(ans, u + d - 1);

return {u, d};

};

dfs(root);

return ans;

}

};

lc3641

滑窗和hash天生一对😋

class Solution {
//set size
//max len
public:
int longestSubarray(vector<int>& nums, int k)
{
int n=nums.size();
unordered_map<int,int> hash;
int l=0,r=0,mx=0,rp=0;
while(r<n)
{
if(++hash[nums[r]]==2)
rp++;
r++;
while(rp>k)
{
if(--hash[nums[l]]==1)
rp--;
l++;
}
mx=max(mx,r-l);
}
return mx;
}
};

rust导入hash

use std::collections::HashMap;

impl Solution {
pub fn longest_subarray(nums: Vec<i32>, k: i32) -> i32 {
let n = nums.len();
let mut hash = HashMap::new();
let mut l = 0;
let mut rp = 0;
let mut mx = 0;

for r in 0..n {
let cnt =hash.entry(nums[r]).and_modify(|c| *c += 1).or_insert(1);
if *cnt == 2 {
rp += 1;
}

while rp > k {
let cnt = hash.entry(nums[l]).and_modify(|c| *c -= 1).or_insert(0);
if *cnt == 1 {
rp -= 1;
}
l += 1;
}

mx = mx.max((r - l + 1) as i32);
}

mx
}
}

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

Apache2最佳实践

Apache2最佳实践&#xff1a;从性能优化到安全加固的全维度指南Apache2&#xff08;httpd&#xff09;作为开源Web服务器的标杆&#xff0c;其默认配置仅能满足基础运行需求&#xff0c;在高并发、高安全等级的生产环境中往往力不从心。本文基于资深运维经验&#xff0c;从性能…

作者头像 李华
网站建设 2026/6/23 21:02:51

实力派,也可以是偶像派

谁说高性能设备就得是灰头土脸的“黑盒子”&#xff1f;绿算技术GP Spark表示&#xff1a;我不服。这台小钢炮&#xff0c;除了能打&#xff0c;还能“搭”。全铝外壳支持高级配色定制&#xff1a;无论是“西装暴徒”雅黑、“富贵逼人”流光金、“深邃学霸”宝石蓝&#xff0c;…

作者头像 李华
网站建设 2026/6/23 18:59:01

基于单片机的多功能万年历

一、系统设计目标与需求分析 在日常时间管理与环境监测需求的推动下&#xff0c;基于单片机的多功能万年历突破了传统日历的功能局限&#xff0c;旨在构建集时间显示、环境感知、智能提醒于一体的小型电子终端。核心需求包括&#xff1a; 时间与日期管理&#xff1a;精确显示年…

作者头像 李华
网站建设 2026/6/22 20:52:01

AI搜索时代:技术演进、产业分化与深度变革

“AI搜索时代”的到来&#xff0c;并非仅仅是搜索引擎界面多了一个聊天框&#xff0c;而是一场从底层逻辑到社会影响的深刻重构。它正在重新定义我们如何获取信息、处理知识乃至进行社会连接。本系列将不涉及任何具体产品或公司的推广&#xff0c;而是从宏观趋势、产业分化、内…

作者头像 李华
网站建设 2026/6/22 2:45:09

SGMICRO圣邦微 SGM2019-2.5YC5G/TR SC70-5 线性稳压器(LDO)

特性工作输入电压范围&#xff1a;2.5V至5.5V固定输出电压&#xff1a;1.2V、1.5V、1.8V、2.5V、2.6V、2.8V、2.85V、3.0V、3.3V可调输出电压范围&#xff1a;1.2V至5.0V输出电压精度&#xff1a;25C时为2.5%低输出噪声&#xff1a;30μV_RMS&#xff08;典型值&#xff09;低压…

作者头像 李华
网站建设 2026/6/23 17:36:47

一文搞懂 低功耗蓝牙BLE 中的 ATT、GATT、MTU 与 20 字节限制

在做 手机 / 前端 / 小程序 与 BLE 设备通信 时&#xff0c;很多人都会遇到这些疑问&#xff1a;为什么 BLE 一次只能传 20 字节&#xff1f;JSON 为什么一用就超限&#xff1f;MTU 到底是什么&#xff0c;调了有什么用&#xff1f;ATT、GATT 老是一起出现&#xff0c;它们到底…

作者头像 李华