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

LeetCode 2257. Count Unguarded Cells in the Grid

🔗 https://leetcode.com/problems/count-unguarded-cells-in-the-grid

题目

  • 给出一个 m x n 的二维表格,格子上有士兵 guard,有墙 wall
  • 士兵可以盯上他上下左右所有的格子,碰到墙的格子就停止
  • 返回没有被士兵盯到的格子的数量

思路

  • 二维数组模拟处理即可,对于每一个士兵,不断占领四个方向的格子,直到碰到士兵,或者墙,就停止

  • 最后统计没有被占领的格子的数量

  • 看到过一个比较巧妙的四个方向遍历的预处理,即设置一个长度为 4 的数组,表达四个方向,四个方向可以表达为:

            dir.push_back({-1, 0});dir.push_back({0, -1});dir.push_back({1, 0});dir.push_back({0, 1});
    

代码

class Solution {
public:int countUnguarded(int m, int n, vector<vector<int>>& guards, vector<vector<int>>& walls) {// initbool mark[m][n], mark_wall[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {mark[i][j] = mark_wall[i][j] = false;}}for (auto& wall : walls) {int r = wall[0], c = wall[1];mark_wall[r][c] = true;mark[r][c] = true;}for (auto& guard : guards) {int r = guard[0], c = guard[1];mark_wall[r][c] = true;mark[r][c] = true;}//iteratorvector<vector<int>> dir;dir.push_back({-1, 0});dir.push_back({0, -1});dir.push_back({1, 0});dir.push_back({0, 1});for (auto& guard : guards) {int r = guard[0], c = guard[1];//printf("guard r %d c %d\n", r, c);for (int i = 0; i < dir.size(); i++) {int cur_r = r + dir[i][0], cur_c = c + dir[i][1];//printf("check r %d c %d\n", r, c);while (cur_r >= 0 && cur_r < m &&cur_c >= 0 && cur_c < n && mark_wall[cur_r][cur_c] == false) {mark[cur_r][cur_c] = true;cur_r += dir[i][0];cur_c += dir[i][1];//printf("check r %d c %d\n", r, c);}}}// countint ans = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (mark[i][j] == false) ans++;}}return ans;}
};
http://www.lryc.cn/news/491689.html

相关文章:

  • 即时通讯服务器被ddos攻击了怎么办?
  • 【大数据学习 | Spark-Core】Spark中的join原理
  • 【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法
  • 李宏毅机器学习课程知识点摘要(1-5集)
  • React(五)——useContecxt/Reducer/useCallback/useRef/React.memo/useMemo
  • UE5时间轴节点及其设置
  • git 命令之只提交文件的部分更改
  • 算法 差分修改 极简
  • pcb元器件选型与焊接测试时的一些个人经验
  • OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术
  • 模糊逻辑学习 | 模糊推理 | 模糊逻辑控制
  • 【JavaEE】Servlet:表白墙
  • C++特殊类设计(不能被拷贝的类、只能在堆上创建对象的类、不能被继承的类、单例模式)
  • 【小白学机器学习34】用python进行基础的数据统计 mean,var,std,median,mode ,四分位数等
  • 安装 Docker(使用国内源)
  • Ajax学习笔记,第一节:语法基础
  • 《用Python画蔡徐坤:艺术与编程的结合》
  • Unity中动态生成贴图并保存成png图片实现
  • Mac配置maven环境及在IDEA中配置Maven
  • Reactor 模式的理论与实践
  • vim 一次注释多行 的几种方法
  • 问题记录-Java后端
  • 李春葆《数据结构》-课后习题代码题
  • 51c~C语言~合集2
  • 【Python】构建事件驱动架构:用Python实现实时应用的高效系统
  • Git(一)基本使用
  • HarmonyOS应用开发者基础认证,Next版本发布后最新题库(10月8日更新题库未收录)
  • 【PGCCC】Postgresql BRIN 索引原理
  • 腾讯云 AI 代码助手:产品研发过程的思考和方法论
  • Matlab 深度学习 PINN测试与学习