【LeetCode】每日一题 2023_11_10 咒语和药水的成功对数(练习二分)

news2025/1/16 1:47:18

文章目录

  • 刷题前唠嗑
  • 题目:咒语和药水的成功对数
    • 题目描述
    • 代码与解题思路
    • 偷看大佬题解
  • 结语

刷题前唠嗑


LeetCode? 启动!!!

可恶,今天的题目怎么也这么长

题目:咒语和药水的成功对数

题目链接:2300. 咒语和药水的成功对数

题目描述

代码与解题思路

看完题目,怎么感觉怪怪的,先抛掉脑子吧~

暴力,启动!

func successfulPairs(spells []int, potions []int, success int64) (ans []int) {
    for _, v := range spells {
        cnt := 0
        for _, v2 := range potions {
            sum := int64(v)*int64(v2)
            if sum >= success {
                cnt++
            }
        }
        ans = append(ans, cnt)
    }
    return ans
}


启动失败。。。

是了,中等题怎么可能会让我们随便一个暴力就能过去呢。。。

菜鸟决定去看看题解是怎么做的,没啥思路

偷看大佬题解

二…二分?

这咋二分?这,这,还有这种操作,学会了

func successfulPairs(spells []int, potions []int, success int64) (ans []int) {
    sort.Ints(potions)
    for _, v := range spells {
        left, right := 0, len(potions)-1
        for left < right { // 二分找出成功组合的最小下标
            mid := left+(right-left)/2
            sum := int64(v)*int64(potions[mid])
            if sum >= success {
                right = mid
            } else {
                left = mid+1
            }
        }
        cmp := int64(v)*int64(potions[left])
        if cmp >= success {
            ans = append(ans, len(potions)-right)
        } else { // 没有一个组合成功
            ans = append(ans, 0)
        }
    }
    return ans
}

这道题可以用排序+二分查找的来做,我的主要算法流程如下:

  1. 排序 potions 数组
  2. 遍历 spells 数组
  3. 通过二分查找,找出排序后的 potions 数组中能与 spellls 数组的数成组合的最小下标,举个例子:
    假设这时的 splles 中的元素是 3,sucess 是 9,potions 数组是 [1, 2, 3, 4, 5, 6],二分之后得出的 right 就是 3,因为 3*3 以及乘之后的数 >= sucess 的数,符合题目要求
  4. 然后用 len(potions)-right 就能得出能成功组合的数量了

这道题目使用二分降低时间复杂度的核心就是通过 logn 的算法,求出能够组合成功的数量,将 n 方的算法优化成了 nlogn 级别。

结语

今天早上睡了个懒觉,写的有点晚了,今天的每日一题就当是练习二分啦~

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

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

相关文章

微服务-我对Spring Clound的理解

官网&#xff1a;https://spring.io/projects/spring-cloud 官方说法&#xff1a;Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理、服务发现、熔断器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话…

paddleOcr训练一个属于自己的模型

自己配置开发环境的时候踩了不少坑&#xff0c;现在记录下来&#xff0c;以后需要了可以直接找到现成的代码&#xff0c;也希望能够帮到有需要的小伙伴 目录 &#xff08;一&#xff09;、运行环境搭建1、Anaconda部分Anaconda安装Anaconda创建虚拟环境指令Anaconda Prompt工作…

k8s二进制(ETCD的部署安装)

角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …

双十一剁手节,MobPush助力各大电商平台提前锁定潜力用户

一年一度的购物狂欢节双十一还未到来&#xff0c;各大电商平台却早已摩拳擦掌跃跃欲试。据统计&#xff0c;10月31日晚8点&#xff0c;京东百亿补贴日开场不到4分钟&#xff0c;京东百亿补贴频道成交额破亿&#xff0c;抖音商城整体GMV较去年双11同期提升200%&#xff0c;支付用…

SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)

主要分为客户端和服务端 服务端 pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.3</version><relativePath/> <!-- lookup parent fro…

loading动效实现

在站上闲逛发现一个非常有意思的loading效果&#xff0c;跟着大佬仿写了一下Vue版本的。 https://blog.csdn.net/tianjian4592/article/details/44538605 直接放源码 <script setup> import {ref, defineProps, watch} from "vue";const props defineProps({…

三菱FX3U系列-定位指令

目录 一、简介 二、指令形式 1、相对定位[DRVI、DDRVI] 2、绝对定位[DRVA、DDRVA] 三、总结 一、简介 定位指令用于控制伺服电机或步进电机的位置移动。可以通过改变脉冲频率和脉冲数量来控制电机的移动速度和移动距离&#xff0c;同时还可以指定移动的方向。 二、指令形…

YOLOv5检测界面-PyQt5实现

1.将detect.py运用到界面 要将 YOLOv5 的检测结果与 PyQt 界面结合&#xff0c;你需要进行一些额外的步骤。以下是一个简单的示例代码&#xff0c;展示如何使用 YOLOv5 进行目标检测并在 PyQt 界面中显示结果。 首先&#xff0c;确保你已经安装了必要的库&#xff1a; pip …

C++初阶(九)内存管理

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C/C内存分布1、选择题2、填空题3、sizeof 和 strlen 区别&#xff1f;4、总结 二、 C语言…

『Nacos』 入门教程

前言 本文为 Nacos 平台快速入门教程&#xff0c;本文将会使用通俗易懂的语言手把手带您了解、使用 Nacos 平台&#xff0c;适合未接触过 Nacos 的初学者 官方手册&#xff1a;Nacos | Nacos 官方仓库&#xff1a;alibaba/nacos 版本&#xff1a;2.X 本文示例代码仓库&#xf…

Power Automate-时间戳转化为时区时间

点击编辑 在两个步骤之间再插入一个新步骤&#xff0c;添加操作 在内置里点击日期时间 点击转换时区 下面再修改为已转换的时间

「Verilog学习笔记」4位数值比较器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这里要注意题目的“门级描述方式”&#xff0c;所以我们只能使用基本门电路&#xff1a;&,|,!,^,^~。 具体实现思路&#xff1a;通过真值表得出Y0 Y1 Y2的逻辑表达…

【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家

目录 前言1 使用HAI服务作画的步骤1.1 注册腾讯云账户1.2 创建算力服务器1.3 进入模型管理界面1.4 汉化界面1.5 探索AI绘画 2 模型参数的含义和调整建议2.1 模型参数的含义和示例2.2 模型参数的调整建议 3 调整参数作画的实践和效果3.1 实践说明3.2 实践效果13.3 实践效果23.4 …

电梯用电量-第10届蓝桥杯国赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第8讲。 电梯用电量&#x…

闪站侠洗衣洗鞋管理系统app小程序开发;

闪站侠洗护软件系统为您提供全面的洗衣洗鞋解决方案&#xff0c;系统多门店&#xff0c;多网点。为您开通公中号小程序&#xff0c;并与顺丰、天猫、抖音、美团点评等第三方平台紧密连接。 我们解决洗衣工厂/门店的五大问题&#xff1a; 一、效率 从门店收衣到工厂出库&#xf…

解决GitHub不能访问

1&#xff1a;ping github.com,得到可以解析的地址 2&#xff1a;在host文件里面添加地址&#xff08;记事本打开&#xff09;。 3&#xff1a;可以添加稳定的地址&#xff08;记得地址前加“#”&#xff09; #140.82.121.3 # GitHub #140.82.114.4 # GitHub #140.82.112.4 …

如何构建新一代实时湖仓?袋鼠云基于数据湖的探索升级之路

在之前的实时湖仓系列文章中&#xff0c;我们已经介绍了实时湖仓对于当前企业数字化转型的重要性&#xff0c;实时湖仓的功能架构设计&#xff0c;以及实时计算和数据湖结合的应用场景。 在本篇文章中&#xff0c;将介绍袋鼠云数栈在构建实时湖仓系统上的探索与落地实践&#…

html实现竖直步骤条

1、问题描述 最近碰到一个需求&#xff0c;要把审批流程改为竖直步骤条的形式。本来想直接抄网上的&#xff0c;但是网上给的要么是水平步骤条&#xff0c;要么是集成在框架里的&#xff0c;要么就是人家写的太复杂了&#xff0c;js&#xff0c;css一大堆。 2、我的代码 代码下…

【沁恒 CH32V208 开发板免费试用】+ U盘/ SD NAND读写与多功能数码相框

CH32V208继承了沁恆产品一贯的传统&#xff0c;即U盘的读写功能。这使得尽管CH32V208的闪存要比CH32V307的小一倍&#xff0c;但有了U盘读写功能的支持就可有效地缓解用户对存储空间的需求。它除了支持U盘的读取&#xff0c;还支持对CS SD NAND (贴片式TF卡/SD卡) 这类器件的使…

小黑子—springMVC:第一章 请求处理与响应数据

springMVC入门1.0 1、小黑子的springMVC基础1.1 SpringMVC概述1.2 SpringMVC快速入门1.3 Controller中直接注入spring中维护的Bean1.4 SpringMVC关键组件浅析 2、SpringMVC的请求处理2.1 请求映射路径配置2.2 请求数据的接收2.2.1 键值对方式接收数据2.2.1 - I RquestParam属性…