当前位置: 首页 > news >正文

模拟|双指针

 

 

lc941山脉数组

class Solution {
public:
bool validMountainArray(vector<int>& arr) {
int n = arr.size();
int i = 0;
if (n < 3) return false;
// 上升
while (i < n - 1 && arr[i] < arr[i + 1]) 
i++;


if (i == 0 || i == n - 1) 
return false; 

// 下降
while (i < n - 1 && arr[i] > arr[i + 1]) 
i++;


return i == n - 1; 
}
};

 

lc475

双指针 max(min)

 class Solution {
public:
int findRadius(vector<int>& houses, vector<int>& heaters) {
sort(houses.begin(), houses.end());
sort(heaters.begin(), heaters.end());

// 在供暖器前后插入哨兵,简化边界判断
heaters.insert(heaters.begin(), INT_MIN);
heaters.push_back(INT_MAX);

        int n = houses.size();
// 用 dic 数组存储每个房屋到最近供暖器的距离
vector<long long> dic(n); 
int cur = 0;
int heaterSize = heaters.size();

        for (int i = 0; i < n; i++) {
// 找到第一个位置 >= 当前房屋的供暖器(含哨兵)
while (cur < heaterSize && heaters[cur] < houses[i]) {
cur++;
}
// 计算当前房屋到最近供暖器的距离
long long dist = min(
(long long)heaters[cur] - houses[i], 
(long long)houses[i] - heaters[cur - 1]
);
dic[i] = dist;
}

        // 返回所有房屋距离的最大值,即最小加热半径
return *max_element(dic.begin(), dic.end());
}
};

 

lc403

记忆化搜索,剪枝

class Solution {
public:
vector<int> stones;
unordered_set<int> s;
bool canCross(vector<int>& stones) {
this->stones = stones;
return dfs(0, 0);
}
bool dfs(int k, int idx)
{
int key = idx * 1000 + k;
if (s.count(key) != 0) {
return false;
} else {
s.insert(key);
}

        vector<int> steps = {k - 1, k + 1, k};
for (int step : steps) {
if (step <= 0) continue;
int target = stones[idx] + step;
for (int i = idx + 1; i < stones.size(); ++i) {
if (stones[i] == target) {
if (dfs(step, i)) {
return true;
}
break;
} else if (stones[i] > target) {
break;
}
}
}

        return idx == stones.size() - 1;
}
};

 

http://www.xdnf.cn/news/1405639.html

相关文章:

  • 【CUDA进阶】MMA分析Bank Conflict与Swizzle(下)
  • python pyqt5开发DoIP上位机【介绍】
  • 【cancelToken取消重复请求】
  • uniapp开发 移动端使用字符串替换注意事项
  • GEE中上传研究区域范围
  • ModuleNotFoundError: No module named ‘_cffi_backend‘
  • 服务器CPU飙升该如何排查火焰图
  • 互联网医院系统优势介绍
  • Java试题-选择题(22)
  • 诊断通信管理(Diagnostic Communication Management)详解
  • Shell脚本命令扩展
  • Langflow核心技术学习笔记(新)
  • 针对 “TCP 数据传输机制” 的攻击
  • STL中的容器,迭代器
  • DAY 18 推断聚类后簇的类型 - 2025.8.30
  • Megatron-LM(模型并行)
  • 2025 年 AI 发展十大预测:多模态融合、边缘 AI 普及将成核心增长点
  • Redis数据类型概览:除了五大基础类型还有哪些?
  • 【适度精简】Windows 7 旗舰版-emmy精简系统
  • SpringAI应用开发工程师高阶面试剧本与知识点全解析(含RAG、多租户、流式推理、企业落地场景)
  • leetcode2(移除元素)
  • windows32位下载谷歌浏览器的地址
  • Twitter舆情裂变链:指纹云手机跨账号协同机制提升互动率200%
  • 大数据在UI前端的应用深化研究:用户行为数据的跨平台关联分析
  • 优化器全指南:从原理到调优实战
  • DrissionPage 实战:高效爬取网页数据并保存为 CSV 的全流程解析
  • 什么是雪花算法
  • Western Blot 样本制备完整流程:从细胞 / 组织到变性样品的关键步骤与细节
  • Selenium自动化测试快速入门指南
  • 玄机靶场 | 第五届红明谷-异常行为溯源