【力扣周赛】第394场周赛

文章目录

      • 1.统计特殊字母的数量
      • 2.使矩阵满足条件的最少操作次数

1.统计特殊字母的数量

题目链接
在这里插入图片描述

  • 🍎该题涉及的小技巧:🐥
    🐧①大写字母和对应的小写字母低5位都是相等的;
    🐧②大写字母ASCII二进制第 6 位是0,对应的小写字母第 6 位是1;
    在这里插入图片描述

🐧③位运算小技巧:🐥
在这里插入图片描述

  • 解题思路:
    🐧①将 word 中的字母都取出来各自放入一个大写🔠字母的集合,和一个小写🔡字母的集合;

    🐧②再对两个集合求交集就可以求出同时出现大小写字母的个数;

    🐧③用到的位运算小技巧:
    (ch >> 5) & 1,表示取出该字母的ASCII第6位,如果是 0 表示大写字母,1 表示小写字母;

    1<<(ch&31);,可以将该字母转换成为得到一个唯一的 8个字节32个 比特位数中的一位数字 1,其他的31位都是 0,这样 26个字母每个字母对应的映射都不一样;(例如: 假如 ch 字符是小写字母 c的话,此时1<<(ch&31) )的结果为十进制 8(0000 0000 0000 1000),所以这样看每个字母都有自己对应不同的二进制表示

    🐧④mask[0] & mask[1]表示求交集;

    🐧⑤集合的大小:__builtin_popcount(s)
  • 代码实现
class Solution {
public:
    int numberOfSpecialChars(string word) {

        int mask[2] = {0};

        // 注意:大写字母的ASCII二进制第 6 位是 0,小写字母第 6 位是 1
        for(auto ch : word)
        {
            mask[(ch >> 5) & 1] |= 1<<(ch&31);
        }


        // 求集合的大小:__builtin_popcount(s)

        return __builtin_popcount(mask[0] & mask[1]);
    }
};

2.使矩阵满足条件的最少操作次数

题目链接

在这里插入图片描述

  • 解题思路:
    🐧①逆向思维:求最少操作的次数,那我们可以反过来取求最多保留多少个数字🔢;🎈

    🐧②我们从后往前来求每一列最多保留多少个数字🔢;

    🐧③必须记录前一列填的数字(要保证相邻列数字不同

    🐧④注意❗:必须用一个数组记录每一列用某一个数字的时候的结果,并且及时更新;
  • 解题代码
class Solution {

int n, m;
int cnt[1010][15] = {0};
int vis[1010][15] = {0};
int ans = 0;

public:
    int minimumOperations(vector<vector<int>>& grid) {

        n = grid.size(), m = grid[0].size();
        memset(vis, -1, sizeof(vis));

        for (int i = 0; i < m; i ++)
        {
            for (int j = 0; j < n; j ++)
            {
                int x = grid[j][i];
                cnt[i][x] ++;   // 第 i 列中,0 ~ 9 的个数
            }
        }

        //从最后一列开始往前搜索
        int res = dfs(m - 1, 10);

        // 注意:我们用了逆向思维,求的是最多保留数据的个数
        return n * m - res;
    }
    // 表示搜索第 i 列中,最多保留的个数,前一列为 j
    int dfs(int i, int j)
    {
        // 递归出口
        if (i < 0)
            return 0;
        
        auto& ans = vis[i][j]; // 注意这里是引用
        if (ans != -1)
            return ans;

        ans = 0;
        for (int k = 0; k <= 9; k ++)
        {
            if (k != j)
            {
                ans = max(ans, dfs(i - 1, k) + cnt[i][k]);
            }
        }
        return ans;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

node.js + @elastic/elasticsearch 操作elasticsearch数据库

我这边node.js 使用的是 koa2&#xff0c;elasticsearch是8.11.1版本 官网&#xff1a;https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/getting-started-js.html 一、elastic/elasticsearch 连接 elasticsearch数据库 如果elasticsearch没有设…

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码&#xff0c;github仓库 使用vs编译源码&#xff0c;新建一个静态库项目(只会生成lib文件)&#xff0c;想要dll的话就新建dll项目&#xff08;有一个lib文件和dll文件&#xff09; 把lua源码下面的文件夹都是&#xff0c;复制到vs项目中 lib目录是我手动…

ResNeXt网络结构

一、简介 在ResNet的基础上&#xff0c;对残差结构的block进行了更新。 ResNeXt网络是一种深度神经网络架构&#xff0c;可以视为对ResNet&#xff08;残差网络&#xff09;的改进和升级。ResNeXt结合了VGG网络的堆叠相同基础模块的策略以及Inception系列网络中的split-trans…

杰发科技AC7840——CAN通信简介(6)_监听模式

参考&#xff1a;http://t.csdnimg.cn/AFFPC 0. 简介 7840支持4种扩展模式&#xff0c;其中监听模式。 监听模式概念 作用: 这里写的用于诊断&#xff0c;实际上我还没有用到&#xff0c;不太理解为啥可以用作诊断。 我的理解是&#xff0c;在多个总线下&#xff0c;使用监听…

装饰器模式【结构型模式C++】

1.概述 装饰器模式是一种结构型设计模式&#xff0c; 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08;Concre…

苍穹外卖绕过微信支付

经过以下改动可实现&#xff1a; 1、不用微信支付端口 2、弹出支付成功的界面 3、数据库修改支付成功后的数据 #在OrderServiceImpl.java里加入Autowiredprivate OrderService orderService; #在OrderServiceImpl.java里的payment函数做以下改动 #图片里有&#xff0c;红色为原…

时间序列生成数据,TransformerGAN

简介&#xff1a;这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外&#xff0c;还实现了基于prompt的数据生成&#xff0c;比如指定生成某个月份的数据、某半个月的数据、某一个星期的…

Qt | 窗口的显示及可见性|标题、透明度、启用/禁用|窗口标志、设置其他属性|获取窗口部件、设置父部件|鼠标光标

​显示事件:QEvent::show,处理函数为 showEvent(QShowEvent*) 隐藏事件:QEvent::hide,处理函数为 hideEvent(QHideEvent* ) 01 QWidget 类中与可见性有关的属性 visible:bool 访问函数: bool isVisible() const; virtual void setVisible(bool visible); 02 QWid…

同事上班这样摸鱼,我坐边上咋看他都在专心写代码啊

我边上有个同事&#xff0c;我坐他边上&#xff0c;但是每天看着他都眉头紧锁&#xff0c;忙的不亦乐乎&#xff0c;但终于有一天&#xff0c;我发现了他上班摸鱼的秘诀。 我劝你千万不要学会这4招&#xff0c;要不就该不好好上班了。 目录 1 上班看电影&#xff1f; 2 上班…

LeetCode - LCR 179.查找总价格为目标值的两个商品

一. 题目链接 LeetCode - LCR 179. 查找总价格为目标值的两个商品 解法&#xff08;双指针 - 对撞指针&#xff09;&#xff1a; 算法思路&#xff1a; 注意到本题是升序的数组&#xff0c;因此可以用「对撞指针」优化时间复杂度。 算法流程&#xff1a; 初始化left &#…

算法入门ABC

前言 初学算法时真的觉得这东西晦涩难懂&#xff0c;貌似毫无用处&#xff01;后来的后来&#xff0c;终于渐渐明白搞懂算法背后的核心思想&#xff0c;能让你写出更加优雅的代码。就像一首歌唱的那样&#xff1a;后来&#xff0c;我总算学会了如何去爱&#xff0c;可惜你早已远…

Hotcoin Academy 市场洞察-2024年4月15日-21日

加密货币市场表现 BTC ETF在本周出现净流出&#xff0c;大盘有较大跌幅&#xff0c;BTC一度跌破60000美金&#xff0c;ETH一度跌破2800美金&#xff0c;整体以横盘为主&#xff0c;行情在周末有略微回升趋势。BTC市占率创21年4月来新高&#xff0c;目前市值1.28万亿&#xff0c…

ElasticSearch教程入门到精通——第六部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第六部分&#xff08;基于ELK技术栈elasticsearch 7.x8.x新特性&#xff09; 1. Elasticsearch优化1.1 硬件选择1.1 分片策略1.1.1 分片策略——合理设置分片数1.1.2 分片策略——推迟分片分配 1.2 路由选择1.2.1 路由选择——不带routing查询1…

哪款洗地机最好用?2024年四大口碑一流品牌推荐

随着人们生活质量的提升&#xff0c;人们的扫地、拖地都可以用智能清洁工具来高效完成&#xff0c;像洗地机它集合了扫地、拖地、自清洁等功能&#xff0c;让我们摆脱了每次打扫卫生就像打仗一样&#xff0c;忙活半小时下来腰酸背痛的窘境。所以越来越多的家庭纷纷开始用洗地机…

84.柱形图中最大的矩阵

二刷终于能过了. 思路解析: 不愧是hard,第一步就很难想, 对于每一个矩阵,我们要想清楚怎么拿到最大矩阵, 对于每个height[i],我们需要找到left和right,left是i左边第一个小于height[i]的,right是右边第一个小于height[i]的,那么他的最大矩阵就是height[i] * (right-left-…

鸿蒙launcher浅析

鸿蒙launcher浅析 鸿蒙launcher源码下载鸿蒙launcher模块launcher和普通的应用ui展示的区别 鸿蒙launcher源码下载 下载地址如下&#xff1a; https://gitee.com/openharmony/applications_launcher 鸿蒙launcher模块 下载页面已经有相关文件结构的介绍了 使用鸿蒙编辑器D…

国外企业使用生成式人工智能实例100

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Welcome to nginx!怎么解决?

要解决 "welcome to nginx!" 错误&#xff0c;需要检查虚拟主机配置&#xff0c;启用虚拟主机&#xff0c;重新加载 nginx&#xff0c;如果无法找到虚拟主机配置文件&#xff0c;则创建默认页面并重新加载 nginx&#xff0c;这样错误消息将消失&#xff0c;网站将正常…

数据结构之顺顺顺——顺序表

1.浅谈数据结构 相信我们对数据结构都不陌生&#xff0c;我们之前学过的数组就是最基础的数据结构&#xff0c;它大概就长这样&#xff1a; 数组 而作为最简单的数据结构&#xff0c;数组只能帮助我们实现储存数据这一个功能&#xff0c;随着学习的深入&#xff0c;和问题的日渐…

Qt | 标准、复选、单选、工具、命令按钮大全

01、QPushButton QPushButton 类(标准按钮) 示例 3:默认按钮与自动默认按钮 02、QCheckBox QCheckBox 类(复选按钮) 1、复选按钮的第三状态(见右图 Qt5.10.1 的选中状态):是指除了选中 和未选中状态之外的第三种状态,这种状态用来指示“不变”,表 示用户既不选中也不取…
最新文章