Leetcode - 138双周赛

news2024/9/23 7:29:05

目录

一,3270. 求出数字答案

二,3271. 哈希分割字符串

三,3272. 统计好整数的数目

四,3273. 对 Bob 造成的最少伤害


一,3270. 求出数字答案

本题数据范围小,可以将数字转换成字符串来做,这里教一种更省空间的做法。我们可以从后往前求出每一个数位的最小值min(a % 10, b  % 10,c % 10),a /= 10,b /= 10,c /= 10。只要a,b,c 中有一个变成 0 了,说明前面是要补0了,所以前面数位的最小值一定是0,直接跳出循环。

代码如下:

class Solution {
    public int generateKey(int a, int b, int c) {
        int ans = 0, base = 1;
        while(a > 0 && b > 0 && c > 0){
            ans += base * Math.min(c%10, Math.min(a%10, b%10));
            a /= 10;
            b /= 10;
            c /= 10;
            base *= 10;
        }
        return ans;
    }
}

二,3271. 哈希分割字符串

本题就是纯模拟题,它说什么就做什么,代码如下:

class Solution {
    public String stringHash(String s, int k) {
        int n = s.length();
        StringBuilder res = new StringBuilder();
        for(int i=0; i<n; i+=k){
            int t = 0;
            for(int j=i; j<i+k; j++){
                t = (t + s.charAt(j) - 'a') % 26;
            }
            res.append((char)('a'+t));
        }
        return res.toString();
    }
}

三,3272. 统计好整数的数目

本题求有多少个长度为 n 的正整数在重新排列后能变成一个回文整数,且该回文数能被 k 整除,由数据范围可知,我们不能枚举长度为 n 的整数来一个个计算,所以我们可以反过来思考,可以先计算出符合条件的回文数,再对回文数重新排列从而得到有多少符合条件的正整数。

如何枚举回文数?因为回文数是对称的,根据这个性质,我们可以直接枚举回文数的左半边,再通过字符串拼接得到完整的字符串,再将其转换成整数判断它是否可以整除 k,如果可以那么它就符合条件。

接下来就是计算回文数能重新排列成多少整数,举个例子:如果给你 5 个数字 1 2 3 4 5 ,那么会出现 5! 个不同的整数, 如果给你 5 个数字 1 1 2 3 4,虽然 1 1 有两种排列,但是它们对应的数字是一样的,所以会重复出现 2! 次,所以会出现 5! / 2! 个不同的整数,由此可以推出如果给你一个长度为 n 的回文数,那么它可以组成 n! / (A! B! C! .....J!) 这里的 A~J 表示 0 ~ 9 出现的次数,但是还有一点需要注意,题目要求不含前导0,所以第一个数只能取 (n - cnt0)个数,剩下的数再排列组和,所以最终每个回文串能得到(n - cnt0)* (n - 1)! / (A! B! C! .....J!)  个整数

代码如下:

class Solution {
    public long countGoodIntegers(int n, int k) {
        int[] fac = new int[n+1];
        fac[0] = 1;
        for(int i=1; i<=n; i++){
            fac[i] = i * fac[i-1];
        }

        long ans = 0;
        Set<String> set = new HashSet<>();
        int base = (int)Math.pow(10, (n-1)/2);
        for(int i=base; i < base * 10; i++){
            String s = Integer.toString(i);
            s += new StringBuilder(s).reverse().substring(n % 2);
            if(Long.parseLong(s) % k > 0) continue;
            char[] ch = s.toCharArray();
            Arrays.sort(ch);
            if(set.contains(new String(ch))){
                continue;
            }
            set.add(new String(ch));

            int[] cnt = new int[10];
            for(char c : ch){
                cnt[c-'0']++;
            }
            int res = (n - cnt[0]) * fac[n-1];
            for(int c : cnt)
                res /= fac[c];
            ans += res;
        }
        return ans;
    }
}

四,3273. 对 Bob 造成的最少伤害

本题就是一道贪心,首先我们可以判断出Bob不能雨露均沾,他一定是杀死一个后再去杀另一个,所以可以假设有两个敌人A,B,伤害 dA,dB,健康值 hA,hB。有两种选择:

  • 先杀A,Bob会受到的伤害:(dA + dB)* (hA+p-1)/p + dB * (hB+p-1)/p
  • 先杀B,Bob会受到的伤害:(dA + dB)* (hB+p-1)/p + dB * (hA+p-1)/p

如果先杀A时,Bob受到的伤害更低,(dA + dB)* (hA+p-1)/p + dB * (hB+p-1)/p < (dA + dB)* (hB+p-1)/p + dB * (hA+p-1)/p,化简之后得到:dB * (hA+p-1)/p < dA * (hB+p-1)/p,只要满足该条件,就能判断先杀谁后杀谁,所以可以根据上述条件排序,再计算得到答案。

代码如下:

class Solution {
    //x a
    //y b
    //b * (x / p) 
    //a * (y / p)
    public long minDamage(int p, int[] damage, int[] health) {
        long sum = 0;
        int n = damage.length;
        Integer[] idx = new Integer[n];
        Arrays.setAll(idx, i->i);
        Arrays.sort(idx, (x, y) -> damage[x] * ((health[y] + p-1) / p) - damage[y] * ((health[x] + p-1) / p));
        long res = 0;
        for(int i=0; i<n; i++){
            sum += damage[idx[i]];
            res += (long)((health[idx[i]]+p-1)/p * sum);
        }
        return res;
    }
}

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

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

相关文章

【科研绘图】【3D轨线图】:附Origin详细画图流程

目录 No.1 理解3D轨线图 No.2 画图流程 1 导入数据并绘图 2 设置绘图细节 3 设置坐标轴 4 效果图 No.1 理解3D轨线图 3D轨线图&#xff0c;是指在三维坐标系中&#xff0c;通过连续的点或线段连接而成的图形&#xff0c;用于表示一个或多个物体在三维空间中的运动路径。…

AT3340:支持BDS/GPS双模授时板数据手册

AT3340采用ATGM331C-5T31授时模块&#xff0c;是高授时精度的BDS/GPS双模接收机板卡&#xff0c;包含32个跟踪通道&#xff0c;支持GPS和BDS的单系统授时定位和双系统联合授时定位&#xff0c;可以通过上位机命令切换。其中的射频前端芯片和基带芯片全部由杭州中科微独立研发&a…

网络地址转换NAT(Network Address Translation)

NAT概述 NAT是将IP数据报文头中的IP地址转换为另一个IP地址的过程&#xff0c;主要用于实现内部网络&#xff08;私有IP地址&#xff09;访问外部网络&#xff08;公有IP地址&#xff09;的功能。Basic NAT是实现一对一的IP地址转换&#xff0c;而NAPT可以实现多个私有IP地址映…

wacat - 一款开源随机测试工具

想象一下&#xff0c;你离开电脑一会儿去拿一杯咖啡。与此同时&#xff0c;你的猫走过键盘&#xff0c;引发了一些混乱。 wacat 应用程序&#xff1a; • 访问你的网页应用的根网址 • 随机访问应用中的每个链接 • 在表单中添加随机文本输入 • 从下拉菜单、复选框等中选择…

当下最火爆的外卖会员卡项目值得吗

外卖会员卡项目是现如今外卖行业的热门课题之一。随着人们生活水平的提高和生活节奏的加快&#xff0c;外卖已经成为了许多人日常生活中的重要组成部分。为了吸引更多的顾客和提升用户黏性&#xff0c;许多外卖平台纷纷推出了会员卡项目。下面就给大家讲讲这个项目值不值得 第一…

vue2使用qiankun框架笔记

vue2使用qiankun框架笔记&#xff08;更新中&#xff09; 前言1. 创建项目1.1 创建项目和选择预置1.2 记录项目结构和依赖 2. 使用qiankun框架&#xff08;让微应用如iframe般嵌入到主应用中&#xff09;2.1 主应用下载乾坤&#xff0c;注册微应用2.2 改造主应用&#xff0c;创…

springboot中根据id更新用户信息

根据查询到详情&#xff0c;进行回想到弹窗&#xff0c;然后修改信息&#xff0c;保存更新用户信息 实现效果 代码实现 controller代码 /*** 修改员工*/PutMappingpublic Result update(RequestBody Emp emp) {log.info("修改员工操作 {}", emp);empService.updat…

深度学习(六)-循环神经网络

标准CNN模型的不足 假设数据之间是独立的。标准CNN假设数据之间是独立的&#xff0c;所以在处理前 后依赖、序列问题&#xff08;如语音、文本、视频&#xff09;时就显得力不从心。这一类数 据&#xff08;如文本&#xff09;和图像数据差别非常大&#xff0c;最明显的差别莫…

深度孤立森林 Deep Isolation Forest论文翻译(上)

README 绝大部分是自己翻译自己手打的&#xff0c;少部分参考有道翻译&#xff0c;主要是想仔细再读一遍&#xff0c;顺便就打出来了。这篇论文内容比较多&#xff0c;有代码&#xff0c;原作者有github和知乎账号&#xff0c;感兴趣可以找一下。欢迎讨论和批评指正。 用于异…

设计模式及创建型模式-python版

1 架构模式与设计模式 架构模式搞层次的设计模式&#xff0c; 描述系统整体结构和组织方式&#xff0c;设计模式是针对某个问题的解决方案&#xff0c;是一种解决问题的思路。 2 设计模式的分类 2.1 创建型模式 单例模式&#xff0c;工厂方法模式&#xff0c;抽象工厂模式&…

无人机反制:无线电侦测设备技术详解

无人机反制技术中的低空安全综合管理平台&#xff0c;作为守护低空安全的重要工具&#xff0c;集成了多种先进的技术手段和管理功能&#xff0c;实现了对无人机等低空飞行器的全方位、无死角监控与反制。以下是对该技术平台的详细解析&#xff1a; 一、技术架构与核心功能 低…

HTB-bike(SSTI模版注入)

前言 大家好&#xff0c;我是qmx_07,今天给大家讲解bike靶场 渗透过程 信息搜集 服务器开放了 22 ssh 和 http80端口 Wappalyzer 介绍&#xff1a;Wappalyzer是一种浏览器扩展程序&#xff0c;用于识别正在访问的网站所使用的技术栈和工具&#xff0c;比如使用的web框架&…

紫光同创PDS自动构建

1.开发背景 随着开发进度的不断迭代&#xff0c;需要对代码实行管控&#xff0c;FPGA代码管控也很重要&#xff0c;这个篇章主要是对紫光同创 PDS 开发环境下实现代码自动构建功能 2.开发需求 设计实验&#xff1a; 1&#xff09;点击一个脚本自动编译工程 2&#xff09;工程…

Fréchet Inception Distance(FID)原理

原理概述&#xff1a; FID 的核心思想是通过比较真实图像和生成图像在 Inception 模型特征空间中的分布差异&#xff0c;来评估生成模型的性能。它假设从真实数据和生成数据中提取的特征都近似服从高斯分布。 具体步骤&#xff1a; 特征提取&#xff1a;使用预训练的 Incepti…

动态加载使用Appsflyer报错Attribution data for this AppsFlyer ID is not available

1. 使用动态classloader加载AF SDK 日志&#xff1a;不能获取到非自然量 2024-09-03 18:07:22.350 2114-2114 ddup com.pn.cal I 找到AssetManager 2024-09-03 18:07:22.350 2114-2114 ddup com.pn.cal …

免费分享:中国煤炭资源分布图

数据详情 中国煤炭资源分布图 数据属性 数据名称&#xff1a;中国煤炭资源分布图 空间位置&#xff1a;中国 ​ 下载方法 打开数字地球开放平台网站&#xff0c;需要先注册登录&#xff0c;登录完成后&#xff0c;选择服务与支持下的资源下载&#xff0c;搜索并点击进入本…

Python加载 TorchScript 格式的 ResNet18 模型分类该模型进行预测并输出预测的类别和置信度

首先加载预训练的 ResNet18 模型。将模型设置为评估模式&#xff0c;以确保特定层&#xff08;如 Dropout 和 BatchNorm&#xff09;在评估时具有确定性的行为。创建一个形状为 (1, 3, 224, 224) 的随机张量作为示例输入。使用 torch.jit.trace 函数追踪模型在给定示例输入上的…

渗透测试靶机----DC系列 DC-1

渗透测试靶机----DC系列 DC-1 开启靶机&#xff0c;依旧是登陆窗&#xff0c;平平无奇 扫描ip&#xff0c;扫描端口&#xff0c;服务等信息 可以看到这里存在80服务&#xff0c;访问看看 非常明显&#xff0c;这里存在一个Drupal 的cms 并且是一个登录框&#xff0c;思路打开 …

VMware Fusion 13.6 发布下载,新增功能概览

VMware Fusion 13.6 发布下载&#xff0c;新增功能概览 VMware Fusion 13.6 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-fusion-13/&#xff0c;查看最…

位运算专题——常见位运算位图的使用力扣实战应用

目录 1、常见位运算 2、算法应用【leetcode】 2.1 判断字符是否唯一【面试题 】 2.1.1 算法思想【位图】 2.1.2 算法代码 2.2 只出现一次的数字 III 2.2.1 算法思想 2.2.2 算法代码 2.3 丢失的数字 2.3.1 算法思想 2.3.2 算法代码 2.4 两整数之和 2.4.1 算法思想 2…