第一周题目总结

news2024/12/23 13:25:09

1.车尔尼有一个数组 nums ,它只包含  整数,所有正整数的数位长度都 相同 。

两个整数的 数位不同 指的是两个整数 相同 位置上不同数字的数目。

请车尔尼返回 nums 中 所有 整数对里,数位不同之和。

示例 1:

输入:nums = [13,23,12]

输出:4

解释:
计算过程如下:
13 和 23 的数位不同为 1 。
- 13 和 12 的数位不同为 1 。
23 和 12 的数位不同为 2 。
所以所有整数数对的数位不同之和为 1 + 1 + 2 = 4 

class Solution {
public:
    long long sumDigitDifferences(vector<int>& nums) {
        long long ans = 0; // 初始化答案为0
        // cnt 是一个二维数组,每个元素是一个大小为10的数组
        // cnt[i][d] 表示在第 i 位上数字为 d 的个数
        vector<array<int, 10>> cnt(to_string(nums[0]).length());

        // 遍历 nums 数组
        for (int k = 0; k < nums.size(); k++) {
            int x = nums[k]; // x 是当前处理的整数

            // 遍历 x 的每一位
            for (int i = 0; x; x /= 10, i++) {
                int d = x % 10; // 取出 x 的最低位数字 d

                // 更新答案 ans
                // k - cnt[i][d] 表示第 i 位上数字为 d 的个数与当前位置 k 的差值
                ans += k - cnt[i][d]++;
            }
        }
        return ans; // 返回最终的答案
    }
};

  1. 初始化变量和数据结构

    • ans 初始化为 0,用来存储最终的结果,即所有整数对的数位不同之和。
    • cnt 是一个二维数组,大小为 to_string(nums[0]).length(),即第一个整数的位数。每个 cnt[i] 是一个大小为 10 的数组,用来统计每个位置上数字出现的次数。
  2. 遍历整数数组 nums

    • 对于数组中的每个整数 nums[k],进行处理。
  3. 处理每个整数 x

    • 使用一个内部循环,不断取出 x 的最低位数字 d,直到 x 变为 0。
    • x % 10 得到 x 的最低位数字 d
    • x /= 10 将 x 右移一位,继续处理下一位数字。
  4. 更新答案 ans

    • 对于每个数字 d 在第 i 位上出现,更新 ans
      • k - cnt[i][d] 表示当前位置 k 减去第 i 位上数字为 d 的个数。
      • cnt[i][d]++ 更新 cnt[i][d],表示第 i 位上数字为 d 的个数增加了一个。
  5. 返回结果

    • 返回累计的 ans,即所有整数对的数位不同之和。

2.  如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。

周洋哥有一个整数数组 nums 和一个二维整数矩阵 queries,对于 queries[i] = [fromi, toi],请你帮助周洋哥检查子数组 nums[fromi..toi] 是不是一个 特殊数组 

返回布尔数组 answer,如果 nums[fromi..toi] 是特殊数组,则 answer[i] 为 true ,否则,answer[i] 为 false 。

示例 1:

输入:nums = [3,4,1,2,6], queries = [[0,4]]

输出:[false]

解释:

子数组是 [3,4,1,2,6]。2 和 6 都是偶数。

class Solution {

public:

    vector<bool> isArraySpecial(vector<int>& nums, vector<vector<int>>& queries) {  

        int k=queries.size();  

              int q[100000] = {0};

            q[0]=1;

    for (int i = 1; i < nums.size(); ++i) {

        if ((nums[i] % 2) == (nums[i - 1] % 2))

            q[i] = q[i - 1] + 1;

        else

            q[i] = q[i - 1];

       

    }

   vector<bool> answer;

    for (int i = 0; i <k; i++) {

        if (q[queries[i][0]] == q[queries[i][1]]) {

                answer.push_back(true);

            }

            else

                answer.push_back(false);

    }

    return answer;

    }

};

给你两个整数 numBottles 和 numExchange 。

numBottles 代表你最初拥有的满水瓶数量。在一次操作中,你可以执行以下操作之一:

  • 喝掉任意数量的满水瓶,使它们变成空水瓶。
  • 用 numExchange 个空水瓶交换一个满水瓶。然后,将 numExchange 的值增加 1 。

注意,你不能使用相同的 numExchange 值交换多批空水瓶。例如,如果 numBottles == 3 并且 numExchange == 1 ,则不能用 3 个空水瓶交换成 3 个满水瓶。

返回你 最多 可以喝到多少瓶水。

示例 1:

输入:numBottles = 13, numExchange = 6
输出:15
解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。

class Solution {

public:

    int maxBottlesDrunk(int numBottles, int numExchange) {

        // ans:答案

        // emp:目前有的空瓶数

        int ans = 0, emp = 0;

        while (true) {

            // 把所有水喝完

            ans += numBottles;

            emp += numBottles;

            numBottles = 0;

            if (emp >= numExchange) {

                // 空瓶足够,进行一次兑换

                emp -= numExchange;

                numBottles++;

                numExchange++;

            } else {

                // 空瓶不够了,无法获得更多瓶子,退出模拟

                break;

            }

        }

        return ans;

    }

};

由于每 numExchange 个空瓶才能换一瓶,且每次兑换 numExchange 都会加一,所以只要 numExchange 至少为 2,则每次兑换都会至少“损失”一个瓶子。一开始一共只有 numBottles 个瓶子,显然至多 numBottles 次兑换之后就没有瓶子了。

4

给你一个大小为 m x n 的二维矩阵 grid 。你需要判断每一个格子 grid[i][j] 是否满足:

  • 如果它下面的格子存在,那么它需要等于它下面的格子,也就是 grid[i][j] == grid[i + 1][j] 。
  • 如果它右边的格子存在,那么它需要不等于它右边的格子,也就是 grid[i][j] != grid[i][j + 1] 。

如果 所有 格子都满足以上条件,那么返回 true ,否则返回 false 。

示例 1:

输入:grid = [[1,0,2],[1,0,2]]

输出:true

解释:

class Solution {

public:

    bool satisfiesConditions(vector<vector<int>>& grid) {

        int m,n;

        m=grid.size();

        n=grid[0].size();

        for(int i=0;i<m-1;i++)

        {

            for(int j=0;j<=n-1;j++)

            {

              if(grid[i][j]!=grid[i+1][j])

              return false;

            }

        }

         

            for(int j=0;j<n-1;j++)

            {

             

                 if(grid[0][j]==grid[0][j+1])

                 {  

                   return false;

                 }

           

         

        }

         return true;

    }

   

};

对于每个格子 grid[i][j],它需要与它下面的格子 grid[i+1][j] 相等。这一部分代码通过两层循环实现:

for (int i = 0; i < m - 1; ++i)

{

for (int j = 0; j < n; ++j)

{

if (grid[i][j] != grid[i+1][j])

{

return false;

} } }

在第一层循环中,遍历每一行 i,第二层循环遍历该行的每一列 j。如果发现 grid[i][j] 不等于 grid[i+1][j],即当前格子与下面的格子不相等,直接返回 false

条件二检查: 对于每个格子 grid[i][j],它需要与其右边的格子 grid[i][j+1] 不相等。这部分代码如下:

for (int j = 0; j < n - 1; ++j)

{

if (grid[0][j] == grid[0][j+1])

{

return false; } }

这里只需遍历第一行 grid[0] 的每一列 j,检查相邻的两个格子 grid[0][j]grid[0][j+1] 是否相等。如果有任何一对相邻格子相等,即返回 false

返回结果: 如果两个条件都满足,即所有格子都满足要求,则返回 true

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

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

相关文章

16:9横屏素材去哪里找?优秀的横屏视频素材资源网站分享

在这个视频内容快速发展的时代&#xff0c;寻找合适的视频素材变得尤为重要。以下是几个优秀的16:9横屏视频素材提供网站&#xff0c;无论您是视频制作新手还是资深专家&#xff0c;这些网站都能为您的视频项目增添光彩。 蛙学网 蛙学网作为视频创作者们广为人知的一个平台&am…

茗鹤 | 如何借助APS高级计划排程系统提高汽车整车制造的效率

在我们做了详尽的市场调研及头部汽车制造企业排程需求沟通后&#xff0c;我们发现尽管企业有很多的业务系统做支撑&#xff0c;在计划排程领域&#xff0c;所有的汽车制造总装厂仍旧使用人工“Excel”做排产规划&#xff0c;其中少部分也会借助MRP、第三方辅助排产工具。鉴于我…

科研与英文学术论文写作指南——于静老师课程

看到了一个特别棒的科研与英文学术论文写作指南&#xff0c;理论框架实例。主讲人是中科院信息工程研究所的于静老师。推荐理由&#xff1a;写论文和读论文或者讲论文是完全不一样的&#xff0c;即使现在还没有发过论文&#xff0c;但是通过于老师的课程&#xff0c;会给后续再…

使用 Ollama 时遇到的问题

题意&#xff1a; ImportError: cannot import name Ollama from llama_index.llms (unknown location) - installing dependencies does not solve the problem Python 无法从 llama_index.llms 模块中导入名为 Ollama 的类或函数 问题背景&#xff1a; I want to learn LL…

车载测试之-CANoe创建仿真工程

在现代汽车工业中&#xff0c;车载测试是确保车辆电子系统可靠性和功能性的关键环节。而使用CANoe创建仿真工程&#xff0c;不仅能够模拟真实的车辆环境&#xff0c;还能大大提升测试效率和准确性。那么&#xff0c;CANoe是如何实现这些的呢&#xff1f; 车载测试中&#xff0…

2024年7月3日 (周三) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《魅魔》新DLC《Elysian Fields…

Flink 窗口触发器(Trigger)(一)

Flink 窗口触发器(Trigger)(一) Flink 窗口触发器(Trigger)(二) Flink的窗口触发器&#xff08;Trigger&#xff09;是流处理中一个非常关键的概念&#xff0c;它定义了窗口何时被触发并决定触发后的行为&#xff08;如进行窗口数据的计算或清理&#xff09;。 一、基本概念 …

node与npm安装教程

node与npm的下载安装教程&#xff1a; 文章目录 node与npm的下载安装教程&#xff1a;---Node.js 介绍NPM 介绍 一&#xff1a;下载&#xff08;node与npm的安装包是在一起的&#xff09;二&#xff1a;安装1&#xff1a;双击运行安装文件1-node-v14.15.0-x64.msi,点击下一步。…

区块链加载解析方法

一.区块链加载解析 对于数据的下载主要包括三种方式&#xff1a; 1.实现比特币网络协议&#xff0c;通过该协议和其他比特币全节点建立联系&#xff0c;然后同步区块数据。 2.通过比特币节点提供的API服务下载区块链数据。 3.通过blickchain.com提供的rest服务下载区块数据…

windows 屏幕录制录屏;gif工具推荐;滑动截屏

1、gif工具推荐gif123 参考&#xff1a;https://gif123.aardio.com/ 很小&#xff0c;很简洁 2、滑动截屏 参考&#xff1a;https://shipinzan.com/ll-gd-jp.html 通过google、edge浏览器 3、windows 屏幕录制录屏 1&#xff09;WinG 2)笔记本 prtsc 按键 可以截图&…

ResNet50V2

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、ResNetV1和ResNetV2的区别 ResNetV2 和 ResNetV1 都是深度残差网络&#xff08;ResNet&#xff09;的变体&#xff0c;它们的主要区别在于残差块的设计和…

如何对低代码平台进行分类?

现在市面上的低代码平台就像雨后春笋一样冒出来&#xff0c;而且源源不绝&#xff0c;但总结下来&#xff0c;大致的也就以下三类。 一、 aPaaS多引擎类&#xff08;有很多成熟引擎、做好东西要一起用&#xff09; 这类产品包括&#xff1a;织信Informat&#xff08;国内&…

多模态图像生成的突破:Image Anything一种无需训练的智能框架

多模态图像生成是内容创作领域的热点技术&#xff0c;尤其在媒体、艺术和元宇宙等领域。该技术旨在模拟人类的想象力&#xff0c;将视觉、文本和音频等多种模态属性相关联&#xff0c;以生成图像。早期的方法主要侧重于单一模态输入的图像生成&#xff0c;例如基于图像、文本或…

C++部分复习笔记下

7. C11 范围for 使用格式 vector<int> v { 1,2,3,4,5 }; for (auto e : v) {cout << e << " "; } cout << endl;底层原理&#xff0c;使用迭代器 vector<int> v { 1,2,3,4,5 }; auto it v.begin(); while (it ! v.end()) {cout…

项目2:API Hunter 细节回顾 -1

一. 接口调用 对于开发者来说&#xff0c;接口的调用应当是方便快捷的&#xff0c;而且出于安全考虑&#xff0c;通常会选择在后端调用第三方 API&#xff0c;避免在前端暴露诸如密码的敏感信息。 若采用 HTTP 调用方式&#xff1a; HttpClientRestTemplate第三方库&#xf…

kaggle量化赛金牌方案(第七名解决方案)(下)

— 无特征工程的神经网络模型&#xff08;得分 5.34X&#xff09; 比赛进入最后阶段&#xff0c;现在是时候深入了解一些关于神经网络模型的见解了。由于 Kaggle 讨论区的需求&#xff0c;我在这里分享两个神经网络模型。第一个是 LSTM 模型&#xff0c;第二个是卷积网络&…

PyPDF2指定范围拆分PDF文件为单个页面

本文目录 前言一、指定范围拆分PDF1、过程讲解2、拆分效果图3、完整代码二、其他问题1、更改页码索引值前言 上一篇文章讲解了怎么讲一个PDF文档分割为多个单页面PDF,本文来讲解一下进阶,就是指定范围拆分PDF页面,有的时候,我们只想把PDF文档中的某几页拆分出来,而不是全…

【论文解读】iSDF: Real-Time Neural Signed Distance Fields for Robot Perception

《iSDF: Real-Time Neural Signed Distance Fields for Robot Perception》提出了一种用于实时签名距离场&#xff08;SDF&#xff09;重建的持续学习系统。 论文&#xff1a;https://arxiv.org/abs/2204.02296https://arxiv.org/abs/2204.02296 项目&#xff1a;iSDFhttps:/…

QT创建地理信息shp文件编辑器shp_editor

空闲之余创建一个简单的矢量shp文件编辑器&#xff0c;加深对shp文件的理解。 一、启动程序 二、打开shp文件 三、显示shp文件的几何图形 四、双击右边表格中的feature&#xff0c;主窗体显示选中feature的各个节点。 五、鼠标在主窗体中选中feature的节点&#xff0c;按鼠标左…

【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法

一、介绍 坚果识别系统&#xff0c;使用Python语言进行开发&#xff0c;通过TensorFlow搭建卷积神经网络算法模型&#xff0c;对10种坚果果实&#xff08;‘杏仁’, ‘巴西坚果’, ‘腰果’, ‘椰子’, ‘榛子’, ‘夏威夷果’, ‘山核桃’, ‘松子’, ‘开心果’, ‘核桃’&a…