第 351 场LeetCode周赛

news2025/1/11 11:16:27

A 美丽下标对的数目

在这里插入图片描述
模拟

class Solution {
public:
    int countBeautifulPairs(vector<int> &nums) {
        int n = nums.size();
        int res = 0;
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                if (gcd(to_string(nums[i])[0] - '0', to_string(nums[j]).back() - '0') == 1)
                    res++;
        return res;
    }
};

B 得到整数零需要执行的最少操作数

在这里插入图片描述

脑筋急转弯:考虑 r = n u m 1 − k × n u m 2 r=num_1-k\times num_2 r=num1k×num2,若 r ≥ k r\ge k rk(执行 k k k次操作后可以使 n u m 1 num1 num1非负), 且 r r r的二进制中1的个数 ≤ k \le k k, 则可以把 r r r拆分成 k k k个2的非负整数幂与前面减去的 k k k n u m 2 num_2 num2分别配对, 即存在操作次数为 k k k的方案.

class Solution {
public:
    typedef long long ll;

    int popcnt(ll x) {// 计算2进制中1的个数
        int res = 0;
        for (; x; x >>= 1)
            if (x & 1)
                res++;
        return res;
    }

    int makeTheIntegerZero(int num1, int num2) {
        int res = INT32_MAX;
        ll a = num1, b = num2;
        for (int k = 1; k <= 35; k++) {
            if (a - (b * k + k) >= 0 && popcnt(a - b * k) <= k)
                res = min(res, k);
        }
        return res == INT32_MAX ? -1 : res;
    }
};

C 将数组划分成若干好子数组的方式

在这里插入图片描述

动态规划: 定义 p i p_i pi为将 n u m s [ 0 ∼ i − 1 ] nums[0\sim i-1] nums[0i1]划分成若干好子数组的方式数, 若 n u m s [ i − 1 ] = = 0 nums[i-1]==0 nums[i1]==0, n u m s [ i − 1 ] nums[i-1] nums[i1]只能和 n u m s [ i − 2 ] nums[i-2] nums[i2]一组, 所以 p i = p i − 1 p_i=p_{i-1} pi=pi1, n u m s [ i − 1 ] = = 1 nums[i-1]==1 nums[i1]==1, 设上一个1对应的下标为last, 则有 p i = ∑ l a s t ≤ k < i p k p_i=\sum_{last\le k< i } p_k pi=lastk<ipk, 实现时用前缀和计算

class Solution {
public:
    typedef long long ll;
    ll mod = 1e9 + 7;

    int numberOfGoodSubarraySplits(vector<int> &nums) {
        int n = nums.size();
        ll p[n + 1];
        ll pre[n + 1];
        p[0] = 0;
        pre[0] = 0;
        for (int i = 1, last = -1; i <= n; i++) {
            if (nums[i - 1] == 0)
                p[i] = p[i - 1];
            else {
                if (last == -1)
                    p[i] = 1;
                else
                    p[i] = (pre[i - 1] - pre[last - 1]) % mod;
                last = i;
            }
            pre[i] = pre[i - 1] + p[i];
            pre[i] %= mod;
        }
        return (p[n] % mod + mod) % mod;
    }
};

D 机器人碰撞

在这里插入图片描述
在这里插入图片描述

栈: 把机器人按位置升序排序, 然后顺序遍历机器人判断是否能入栈, 两个机器人碰撞的情况只能是栈尾机器人向右且当前遍历到机器人向左, 之后分类讨论处理进出栈. 遍历完后对栈中剩余机器人按原始下标排序返回剩余健康度.

class Solution {
public:
    vector<int> survivedRobotsHealths(vector<int> &positions, vector<int> &healths, string directions) {
        int n = positions.size();
        vector<tuple<int, int, char, int>> li;//pos,heal,dir,index
        for (int i = 0; i < n; i++)
            li.emplace_back(positions[i], healths[i], directions[i], i);
        sort(li.begin(), li.end());// 按位置升序排序
        vector<tuple<int, int, char, int>> st;
        for (auto &x: li) {
            if (!st.empty() && get<2>(st.back()) == 'R' && get<2>(x) == 'L') {
                int del_x = 0;// 是否删除当前遍历到的机器人x
                while (!st.empty() && get<2>(st.back()) == 'R' && get<2>(x) == 'L') {
                    if (get<1>(st.back()) < get<1>(x)) {// 栈尾健康度<x健康度
                        st.pop_back();
                        get<1>(x)--;
                    } else if (get<1>(st.back()) > get<1>(x)) {// 栈尾健康度>x健康度
                        get<1>(st.back())--;
                        del_x = 1;
                        break;
                    } else {// 栈尾健康度==x健康度
                        del_x = 1;
                        st.pop_back();
                        break;
                    }
                }
                if (!del_x)
                    st.push_back(x);
            } else
                st.push_back(x);
        }
        sort(st.begin(), st.end(), [](auto &x, auto &y) { return get<3>(x) < get<3>(y); });//按原始下标升序排序
        vector<int> res;
        for (auto &x: st)
            res.push_back(get<1>(x));
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能技术与GIS结合的发展

个人本是GIS专业出身&#xff0c;不知名985高校本硕。工作几年后先后积累了国土空间规划、cesium开发、地理信息数据采集、地理大数据处理&#xff0c;遥感影像处理、人工智能识别&#xff0c;做过十多个500万以上的相关项目&#xff0c;有一些浅薄的经验&#xff0c;想和大家分…

tinykv project4总结

主要目标 实现mvcc和2pc, Percolator partA 将存储分为三个独立的部分&#xff0c;lock&#xff08;管理锁记录&#xff09; default(存储数据)&#xff0c;write(提交的记录)&#xff0c;提高并行性 对于lock存储&#xff0c;只要存储一份&#xff08;因为一个行同时只能有…

chatgpt赋能python:用Python编写聊天机器人:打造AI智能助手

用Python编写聊天机器人&#xff1a;打造AI智能助手 简介 聊天机器人在现代生活中越来越受欢迎。一个好的聊天机器人能够回答我们的问题、执行任务、提供娱乐&#xff0c;甚至成为我们的朋友。Python是一种强大的编程语言&#xff0c;其模块化和易学的特性使其成为开发聊天机…

GPT-4在药物发现中的作用|景联文科技

GPT-4是一种生成式AI模型&#xff0c;可以响应文本和图像&#xff0c;它代表了生成式AI可能实现的重大进步。 药物发现的最早任务之一是检索和观察与靶蛋白结合的已知分子。这可能会导致一种基于知识的筛选方法&#xff0c;人们试图通过仅检查这些分子来进行筛选。我们让GPT-4…

【MySQL数据库的表连接语句】

目录 一、连接查询1、inner join(内连接)2、left join(左连接)3、right join(右连接) 二、CREATE VIEW三、UNION取非交集的值 五、CASE六、空值(NULL) 和 无值() 的区别 一、连接查询 A表 B表 UPDATE store_info SET store_nameWashington WHERE sales300;#修改一下表里面的…

chatgpt赋能Python-python自动化办公真的有用吗_知乎

简介 如今&#xff0c;Python作为一种必学的编程语言&#xff0c;已经走进了各行各业的办公场景。Python自动化办公也逐渐成为了一个热门话题&#xff0c;很多人开始使用Python来进行一些机械化、重复性的办公工作&#xff0c;例如数据清洗、文本处理、文件管理、自动发送邮件…

专业CPU信息检测工具:CPU-Z

今天小编为大家测试了一款轻量级的CPU处理器的测试工具&#xff0c;可以查看CPU的详细信息&#xff0c;以供各位同学们学习。 一、简单介绍 CPU-Z是一款非常流行的CPU检测软件&#xff0c;被广大用户所熟知。它是目前最受欢迎的CPU检测软件之一&#xff0c;除了Intel和AMD自带…

chatgpt赋能python:Python自动化填表:省时省力的数据录入方式

Python自动化填表&#xff1a;省时省力的数据录入方式 现代社会&#xff0c;数据填写是我们日常工作中不可避免的一项任务。但手动填写数据不仅费时费力&#xff0c;还容易出错。那么有没有一种方法可以既省时又省力呢&#xff1f;答案是有的&#xff0c;那就是Python自动化填…

Swagger与knife4j接口文档组件详解

swagger介绍 相信无论是前端还是后端开发&#xff0c;都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力&#xff0c;经常来不及更新。其实无论是前端调用后端&#xff0c;还是后端调用后端&#xff…

【数据挖掘】——常见算法对比和选择

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01; &#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4…

2022(一等奖)D678基于改进结构函数法的大气气溶胶遥感反演

作品介绍 1 应用背景 大气气溶胶是大气中重要的成分之一&#xff0c;是悬浮于大气中的固体和液体微粒与它们的气体载体共同组成的多相体系&#xff0c;其尺度大约在10-3到102 μm之间。大气气溶胶的特性对空气质量具有良好的指示作用&#xff0c;气溶胶的研究对空气质量的监测…

读发布!设计与部署稳定的分布式系统(2版)笔记12_超时模式

1. “模式采用量”绝不是好的质量指标 1.1. 应该形成一种“面向恢复”的思维模式 1.2. 良好的模式能为开发工程师提供架构和设计方面的指导&#xff0c;从而减少、消除或缓解系统中的裂纹产生的影响 1.2.1. 在新发布软件后&#xff0c;它们能让你睡个安稳觉 2. 超时 2.1. …

车载网络测试 - CANCANFD - 基础篇_04

9、CAN报文包含帧格式 1&#xff09;数据帧 2&#xff09;远程帧 3&#xff09;错误帧 4&#xff09;过载帧 SOF&#xff1a;Start Of Frame&#xff0c;帧起始位&#xff1b;一个显性位&#xff0c;表明一帧的开始 RTR&#xff1a;Remote Transmission Request&#xff0c;远…

数字孪生世界建设核心能力:数字孪生高效建模能力

创建高保真的数字孪生体虚拟模型是构建数字孪生应用的重要步骤之一&#xff0c;需要真实的再现物理实体的几何图形、属性、行为和规则等。数字孪生体模型不仅要在几何结构上与物理实体保持一致&#xff0c;更重要的是要能模拟物理实体的时空状态、行为、功能等。 1、三维数字孪…

python爬虫之Scrapy框架--日志信息--数据提取

目录 Scrapy日志信息 了解日志信息 关于日志信息的重要性 利用日志信息进行调试和优化 Scrapy数据的提取 选择器&#xff08;Selector&#xff09;的基本使用 Item的定义与使用 数据处理与管道&#xff08;Pipeline&#xff09; Scrapy日志信息 在开发和调试过程中&a…

chatgpt赋能python:Python能跨平台吗?一文详解

Python 能跨平台吗&#xff1f;一文详解 Python 是一种高级编程语言&#xff0c;自问世以来就一直备受欢迎。其简洁明了的语法&#xff0c;高效率的开发和优秀的文档支持为 Python 赢得了数量众多的粉丝。与其他编程语言相比&#xff0c;Python 最大的优势之一是其可在多个操作…

基于Java应急资源管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

什么是HuggingFace

一.HuggingFace简介 1.HuggingFace是什么 可以理解为对于AI开发者的GitHub&#xff0c;提供了模型、数据集&#xff08;文本|图像|音频|视频&#xff09;、类库&#xff08;比如transformers|peft|accelerate&#xff09;、教程等。 2.为什么需要HuggingFace 主要是HuggingFace…

机器学习——决策树算法

一、实验目的 掌握如何实现决策树算法&#xff0c;用并决策树算法完成预测。 二、实验内容 本次实验任务我们使用贷款申请样本数据表&#xff0c;该数据表中每列数据分别代表ID、年龄、高薪、有房、信贷情况、类别&#xff0c;我们根据如下数据生成决策树&#xff0c;使用代…

Python基础 P7 字典和集合

文章目录 Python基础 P7 字典和集合字典字典基础内置函数增操作fromkeys()删操作pop()、popitems()和clear()改操作update()查操作get()和in/not in视图对象keys(),values(),items()拷贝copy()setdefault() 其他函数键值数量len()列表转换list()迭代器转换iter()逆向序列revers…