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

递归|模拟

 

lc825 滑窗

 

统计各年龄人数,用滑动窗口筛选出满足“年龄Y不小于年龄X一半加7”条件的人群

计算出所有符合要求的好友请求总数

 

if (cnt_window > 0) { // 可发
                ans += cnt[age_x] * cnt_window - cnt[age_x];   //自己不可以给自己发

class Solution {
public:
    int numFriendRequests(vector<int>& ages) {
        int cnt[121]{};
        for (int age : ages) {
            cnt[age]++;
        }

        int ans = 0, cnt_window = 0, age_y = 0;
        for (int age_x = 0; age_x < 121; age_x++) {
            cnt_window += cnt[age_x];
            if (age_y * 2 <= age_x + 14) { // 不可发
                cnt_window -= cnt[age_y];
                age_y++;
            }


            if (cnt_window > 0) { // 可发
                ans += cnt[age_x] * cnt_window - cnt[age_x];   //自己不可以给自己发
            }
        }
        return ans;
    }
};
 

 

lc2437

乘法原理

先分别算出时间小时部分和分钟部分符合格式的可能数

再将两者相乘得到总的可能时间数

count(time.substr(0, 2), 24) * count(time.substr(3), 60);

 class Solution {
    int count(string t, int period)

 {
        int ans = 0;
        for (int i = 0; i < period; i++)
            if ((t[0] == '?' || i / 10 == t[0] - '0') &&
                (t[1] == '?' || i % 10 == t[1] - '0'))
                      ans++;
        return ans;
    }
public:
    int countTime(string time) {
        return count(time.substr(0, 2), 24) * count(time.substr(3), 60);
    }
};

 

 

lc2028

if (i < remainder) 
                result.push_back(avg + 1);
先算出缺失数据的总和,再判断是否在合理范围,若在就把总和平均分并调整余数,生成符合骰子点数(1 - 6)的缺失数据

#include <vector>
using namespace std;

class Solution {
public:
    vector<int> missingRolls(vector<int>& rolls, int mean, int n) {
        int m = rolls.size();
        int target = mean * (m + n);
        int sum = 0;
        for (int num : rolls) {
            sum += num;
        }
        int missingSum = target - sum;
        
        // 检查缺失总和是否在合理范围内
        if (missingSum < n || missingSum > 6 * n) {
            return {};
        }
        
        vector<int> result;
        int avg = missingSum / n;
        int remainder = missingSum % n;
        
        // 生成缺失的观测数据
        for (int i = 0; i < n; ++i) {
            if (i < remainder) {
                result.push_back(avg + 1);
            } else {
                result.push_back(avg);
            }
        }
        
        return result;
    }
};

 

 

lc779

抽象为 树

 class Solution {
public:
    int kthGrammar(int n, int k) {
        if (n == 1) return 0;
        int ret = kthGrammar(n - 1, (k + 1)/2);


        if (ret == 0) {
            return k % 2 ? 0 : 1;
        } else {
            return k % 2 ? 1 : 0;
        }
    }
};

翻转_找规律

 

class Solution {
public:
    int kthGrammar(int N, int K)

{
        if(N == 1)return 0;      //出口

        // 计算当前行的长度:2的N-1次方
        int length = pow(2 ,(N - 1));

 

        // 如果K大于长度的一半,就是K所在位置是后半段
        if(K > length / 2){

            // 先得到上一行的值,位置是K相对于后半段的位置
            int val = kthGrammar(N - 1, K - length / 2);

            // 然后把值反过来
            return val == 0 ? 1 : 0;
        }


        // 否则前半部分
        else{

            // 值就是上一行K位置的值
            return kthGrammar(N - 1, K);
        }
    }
};
 

 

http://www.dtcms.com/a/525249.html

相关文章:

  • 站长之家统计广告设计制作税率
  • Linux环境下编译C语言使用libpq连接瀚高数据库
  • 门户网站排行榜seo实战密码第四版电子书
  • 购物网站哪个好电商网站营销
  • HBase基础命令详解
  • 租好服务器咋做网站呢网页设计与网站制作视频教程
  • 上海网站制作网络推广方法网站优化塔山双喜
  • 学习如何用 C++ 写一个线程安全的单例模式
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 21--PO(POM) 设计模式代码实现和全局浏览器驱动设置
  • 旋转花键如何实现微米级定位误差控制?
  • 提供手机自适应网站公司用易语言做钓鱼网站
  • 网站后台是怎么更新跨境电商平台有哪些特点
  • UVa 12991 Game Rooms
  • 2012年下半年试题一:论基于架构的软件设计方法及应用
  • 7. Python 列表:从概念本质到实战应用
  • Windows 安装 postGreSQL 数据库
  • 双堆法求数据流的中位数
  • 平面设计师灵感网站开发三味
  • 使用Requests和正则表达式实现起点中文网小说爬取
  • 擅自使用他人产品做网站宣传网站后台编辑器上传不了图片
  • argocd发布实现预检和后检能力
  • 受欢迎的免费网站建设游戏开发和网站开发哪个好玩
  • 网站建设 软件开发的公司办公网站模板
  • 内蒙古知名网站建设wordpress 摄影博客
  • 掌握 Gemini CLI:自定义命令 (Slash Commands)
  • 平面设计师常用网站铁岭网站建设公司
  • 个人网站做推广wordpress增加论坛
  • oracle存储过程详解
  • 多线程六脉神剑第三剑:信号量 (Semaphore)
  • 网站外链怎么购买网站建设方案计划书