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

49.日常算法

1.LCR 042. 最近的请求次数

题目来源

写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请实现 RecentCounter 类:
RecentCounter() 初始化计数器,请求数为 0 。
int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前更大的 t 值。

示例:
输入:
inputs = [“RecentCounter”, “ping”, “ping”, “ping”, “ping”]
inputs = [[], [1], [100], [3001], [3002]]
输出:
[null, 1, 2, 3, 3]

解释:
RecentCounter recentCounter = new RecentCounter();
recentCounter.ping(1); // requests = [1],范围是 [-2999,1],返回 1
recentCounter.ping(100); // requests = [1, 100],范围是 [-2900,100],返回 2
recentCounter.ping(3001); // requests = [1, 100, 3001],范围是 [1,3001],返回 3
recentCounter.ping(3002); // requests = [1, 100, 3001, 3002],范围是 [2,3002],返回 3

class RecentCounter {
public:
    queue<int> q;
    RecentCounter() {

    }
    
    int ping(int t) {
        q.push(t);
        int n = t - 3000;
        while (q.front() < n){
            q.pop();
        }
        return q.size();
    }
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter* obj = new RecentCounter();
 * int param_1 = obj->ping(t);
 */

1.岛屿数量

题目来源

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [
  ["1","1","1","1","0"],
  ["1","1","0","1","0"],
  ["1","1","0","0","0"],
  ["0","0","0","0","0"]
]
输出:1
class Solution {
public:
    int dx[4] = {0, 0, 1, -1};
    int dy[4] = {1, -1, 0, 0};
    bool check(vector<vector<char>>& grid, vector<vector<int>>& vis, int x, int y){
        return x < 0 || x >= grid.size() || y < 0 || y >= grid[0].size();
    }
    void dfs(vector<vector<char>>& grid, vector<vector<int>>& vis, int x, int y){
        if (check(grid, vis, x, y)) return;
        for (int k = 0; k < 4; ++k){
            int x1 = x + dx[k], y1 = y + dy[k];
            if (check(grid, vis, x1, y1) || grid[x1][y1] == '0' || vis[x1][y1]) continue;
            vis[x1][y1] = 1;
            dfs(grid, vis, x1, y1);
        }
    }
    int numIslands(vector<vector<char>>& grid) {
        int n = grid.size(), m = grid[0].size();
        vector<vector<int>> vis(n, vector<int>(m, 0));
        int ret = 0;
        for (int i = 0; i < n; ++i){
            for (int j = 0; j < m; ++j){
                if (grid[i][j] == '1' && vis[i][j] != 1){
                    ++ret;
                    vis[i][j] = 1;
                    dfs(grid, vis, i, j);
                }
            }
        }
        return ret;
    }
};

相关文章:

  • 深入解析MyBatis中一对一与一对多映射的实现方法与区别
  • Golang的代码注释规范指南
  • 计算机毕业设计SpringBoot+Vue.js众筹网站系统(源码+文档+PPT+讲解)
  • JavaScript实现著名的“两数之和”问题
  • C# Enumerable类 之 数据(类型)转换
  • Linux之kernel(1)系统基础理论(5)
  • 详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!
  • # 【Unity】【游戏开发】赛车游戏中碰撞加速的实现方法
  • LeetCode 692. 前K个高频单词:多种解法与实现技巧
  • YOLO11改进-模块-引入多尺度小波池化变压器MWPT 通过结合小波变换、多尺度池化以及门控机制等技术解决多尺度、小目标、边缘模糊等问题
  • 【GNN】第二章:图数据
  • 【电路笔记 TMS320C6***DSP】外部存储器接口 A EMIFA向FPGA(作为异步存储器)写入数据的示例
  • Python学习(十四)pandas库入门手册
  • 自学Java-JavaSE基础加强(File、IO流)
  • 市场趋势解析与交易策略优化
  • C# Unity 面向对象补全计划 之 [反射]自动处理带有自定义[特性]的类
  • 对celery的,路径,任务路径问题。
  • QDBus:Qt对DBus的封装支持
  • Springboot集成dubbo完整过程(三)
  • gitbash忽略未追踪文件的解决方式
  • dreamweaver做的网站/seo品牌优化百度资源网站推广关键词排名
  • 有口碑的武进网站建设/网络app推广是什么工作
  • 外贸网站源码是什么/互联网产品推广
  • 设计装修的软件/宁波seo关键词如何优化
  • 南京鼓楼做网站/软文交易平台
  • 自己做网站 需要会什么6/百度经验发布平台