力扣每日一题 6/12 + 随机一题

news2024/11/15 20:02:45
  • 博客主页:誓则盟约
  • 系列专栏:IT竞赛 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

2806.取整够买后的账户余额【简单

题目:

一开始,你的银行账户里有 100 块钱。

给你一个整数purchaseAmount ,它表示你在一次购买中愿意支出的金额。

在一个商店里,你进行一次购买,实际支出的金额会向 最近 的 10 的 倍数 取整。换句话说,你实际会支付一个 非负 金额 roundedAmount ,满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值 最小 。

如果存在多于一个最接近的 10 的倍数,较大的倍数 是你的实际支出金额。

请你返回一个整数,表示你在愿意支出金额为 purchaseAmount 块钱的前提下,购买之后剩下的余额。

注意: 0 也是 10 的倍数。

示例 1:

输入:purchaseAmount = 9
输出:90
解释:这个例子中,最接近 9 的 10 的倍数是 10 。所以你的账户余额为 100 - 10 = 90 。

示例 2:

输入:purchaseAmount = 15
输出:80
解释:这个例子中,有 2 个最接近 15 的 10 的倍数:10 和 20,较大的数 20 是你的实际开销。
所以你的账户余额为 100 - 20 = 80 。

提示:

  • 0 <= purchaseAmount <= 100

分析问题:

        其实这道题主要就是判断总额100要减几十,那就按照题目要求写判断语句即可,另外这里需要判断 purchaseAmount%10 的余数是否大于5,如果大于5的话要向上取整,否则向下取整。接下来看代码实现。


代码实现:

class Solution:
    def accountBalanceAfterPurchase(self, purchaseAmount: int) -> int:
        import math
        if purchaseAmount%10>=5:
            key=math.ceil(purchaseAmount/10)*10
            return 100-key
        elif 0<purchaseAmount%10<5:
            return 100-purchaseAmount//10*10
        else: return 100-purchaseAmount

 


总结:

这里是代码的逐步解释:

  1. import math
    这一行导入了math模块,该模块提供数学函数。在这种情况下,math.ceil()函数用于将购买金额向上舍入到最接近的10美元的倍数。

  2. if purchaseAmount%10>=5:
    这个条件检查purchaseAmount除以10的余数是否大于或等于5。如果这个条件为真,意味着购买金额更接近下一个10美元的倍数,所以我们需要向上舍入。

  3. key=math.ceil(purchaseAmount/10)*10
    如果步骤2中的条件为真,这一行计算向上舍入的购买金额。math.ceil(purchaseAmount/10)将购买金额向上舍入到最接近的整数,然后乘以10得到下一个10美元的倍数。

  4. return 100-key
    在计算了四舍五入的购买金额(key)之后,这一行通过从100中减去购买金额来计算并返回剩余余额(假设账户初始金额为100美元)。

  5. elif 0<purchaseAmount%10<5:
    这个条件检查purchaseAmount除以10的余数是否大于0且小于5。如果这个条件为真,意味着购买金额更接近前一个10美元的倍数,所以我们不需要向上舍入。

  6. return 100-purchaseAmount//10*10
    如果步骤5中的条件为真,这一行通过直接从100中减去购买金额(向下舍入到最接近的10美元的倍数)来计算余额。使用//运算符进行整数除法以确保结果是整数。

总体来说,这道题并不难,在考察简单的数学问题。


 

3.无重复字符的最长子串【中等

题目:

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。


请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列不是子串。

提示:

  • 0 <= s.length <= 5 * 10**4
  • s 由英文字母、数字、符号和空格组成

题目分析:

         这道题主要在考察字符串的处理和哈希表的运用。但其实这道题用简单的列表ls就可以解出来,我们用i遍历字符串s:

  • 如果i不在ls里,则将i加到ls内,用v标记最长字符串的长度,如果len(ls)>  v,就更新v的值;
  • 如果i在ls里,则找到i在ls里的下标k,更新ls列表为ls[k+1:],即刚好把i以及i前面的字母全扔出去,然后ls末尾加入刚遍历到的i;此时不需要更新v的值,因为这里裁剪了ls,ls的长度只会变小或不变,不会变大。

要特别注意: 这里s的初始长度可以是0和1,并且s内的元素不一定是英文字母! 下面看一下代码实现。

代码实现:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        n=len(s)
        if n==0: return 0
        if n==1: return 1
        li=[]
        v=0
        for i in s:
            if i not in li:
                li.append(i)
                if len(li)>v: v=len(li)
            else: 
                k=li.index(i)
                li=li[k+1:]
                li.append(i)
        return v


总结:

 以下是代码的详细步骤:

  • 首先获取字符串 s 的长度 n,并对一些特殊情况(长度为 0 或 1)进行处理。
  • 然后创建一个列表 li 用于存储当前不重复的字符序列,以及一个变量 v 用于记录最长子串的长度。
  • 通过遍历字符串 s 中的每个字符,如果该字符不在 li 中,就将其添加到 li 中,并更新 v;如果字符已在 li 中,就找到该字符在 li 中的索引 k,将 li 截断为从索引 k+1 开始的部分,并添加当前字符。
  • 最后返回计算得到的最长子串长度 v

这道题反映的要点如下

  1. 滑动窗口的思想:通过动态调整窗口(这里的列表 li)来寻找符合条件的子串。
  2. 对字符串的遍历和处理:如何逐一分析字符串中的字符。
  3. 利用列表来存储中间状态:记录已经出现的字符。
  4. 对重复字符的处理方式:找到重复字符的位置并进行窗口的调整。

这道题主要考查了:

  1. 对字符串操作的理解和掌握能力。
  2. 逻辑思维能力,如何设计算法来解决不重复子串的问题。
  3. 代码实现能力,将思路转化为实际的代码。

 

“乱花渐欲迷人眼,浅草才能没马蹄。” ——白居易

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

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

相关文章

脾虚,人就废了一半!脾虚分3种,分清是哪一种,才能对症补脾!

入夏养什么&#xff1f;除心之外&#xff0c;还要多养养脾胃&#xff01;因为夏季暑热潮湿&#xff0c;加上天气变热后&#xff0c;大家喜欢吃冰的食物&#xff01;“喜燥恶湿”的脾胃在夏季就很容易受伤&#xff0c;导致脾虚&#xff01; 中医认为&#xff0c;脾主运化&#x…

ArcGIS Pro 3.0加载在线高德地图

1、打开ArcGIS Online官网&#xff0c;登录自己的账号&#xff0c;登录后效果如下图所示 官网地址&#xff1a;https://www.arcgis.com/home/webmap/viewer.html 2、点击Add&#xff0c;选择Add Layer from Web&#xff0c;如下图所示 3、在显示的Add Layer from Web页面内&am…

GA/T 1400 (非标)视图库网关

GA/T 1400 &#xff08;非标&#xff09;视图库网关 应用概述&#xff1a; GAT1400视图库网关产品是公司“分布式综合安防管理平台”下的子系统 针对以下遇到应用场景定制开发、优化后形成的网关产品&#xff0c;具备兼容性高、可扩展、可功能定制、可OEM等优点。 视图库网关…

python中魔术方法__str__与__repr__的区别

在Python中&#xff0c;__str__和__repr__是两个常见的魔法方法&#xff08;也称为双下方法或dunder方法&#xff09;&#xff0c;它们用于定义对象的字符串表示形式。它们的主要区别在于它们的用途和使用场景。 __str__ 用途&#xff1a;__str__方法用于为用户提供一个易读的…

适合营销的叙事可视化

背景 数据可视化与数据故事化的差异和相似点&#xff0c;以及它们如何协同工作&#xff0c;将你的数据转化为清晰、简洁、可操作的信息&#xff0c;以便您的组织使用。 什么是数据可视化&#xff1f; 数据可视化通过图像传达信息——这是你所收集数据的视觉表示。通过提供原…

可以自定义的文字识别OCR

可以自定义的文字识别OCR 什么是OCR文档自学习自定义模板单证票据信息抽取操作体验 这里提到的可以自定义的文字识别OCR &#xff0c;其实就是OCR文档自学习。 什么是OCR文档自学习 什么是OCR文档自学习呢&#xff1f;OCR文档自学习&#xff0c;是面向“无算法基础”的企业与个…

【外汇天眼】交易智慧:遵循趋势,稳中求胜

在交易中&#xff0c;新手往往因对未来走势的不确定性感到恐惧&#xff0c;从而不断要求对市场进行全面分析。这种需求反映了他们在投机心理幼稚期缺乏安全感的表现。有些勤奋的交易者甚至在做单前、持仓时和寻找出局理由时都在不断分析行情。然而&#xff0c;这种过度分析真的…

经典的带环链表问题(链表补充)

环形链表1 运用快慢指针的方法&#xff0c;fast ,slow从头节点出发&#xff0c;快指针走两步&#xff0c;慢指针走一步&#xff0c;若有环&#xff0c;快指针先进环&#xff0c;后续如果慢指针和快指针相遇&#xff0c;则链表带环。转换成了追击问题。 struct ListNode {int v…

第二证券股市资讯:半导体,突发!

半导体又现突发&#xff01; 商场忽然传出&#xff0c;拜登政府正在考虑约束我国获取应用在人工智能&#xff08;AI) 芯片上的全栅级晶体管技能&#xff08;Gate-all-around, GAA) &#xff0c;但不过现在还不清楚美国官员何时会做出最终决议。从趋势来看&#xff0c;这意味着…

高温预警,快收下这份机房运维攻略

高温预警 华东区即将迎来最强高温&#xff0c;根据历史经验&#xff0c;数据机房在夏季高温环境导致设备温度过高&#xff0c;宕机事件明显增加&#xff0c;为保障系统健康稳定运行&#xff0c;需要针对数据机房空调、设备的运行状态及环境进行检查&#xff0c;并同时期开展防尘…

八股文系列Spark

为什么Spark 比 MapReduce 更快 DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数 因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘&#xff0c;而DAG可以连续shuffle的&#xff0c;也就是说一个DAG可以完成好几个mapreduce&#xf…

vue 应用测试(一) --- 介绍

vue 应用测试&#xff08;一&#xff09; ---介绍 前端测试简介组件测试Jest 测试框架简介其他测试框架 第一个测试避免误报如何组织测试代码 组件挂载Vue2 组件挂载的方式Vue3 的挂载方式vue-test-utils挂载选项 如何调试测试用例参考小结 前端测试简介 软件测试&#xff1a;…

康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)

功能模型接口FMI&#xff08;Functional Mock-up Interface&#xff09;是一个开放且与工具解耦的标准。FMI包含了一个C-API&#xff08;接口&#xff09;&#xff0c;一个用于描述接口的XML文件以及可交换的功能模型单元FMU&#xff08;Functional Mock-up Unit&#xff09;&a…

通过nerdctl+buildctl编译发布go程序docker镜像

1 nerdctl安装 下载&#xff1a; wget -c https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-full-1.7.6-linux-amd64.tar.gz 解压&#xff1a; tar -zxf nerdctl-full-1.7.6-linux-amd64.tar.gz -C /usr/local/nerdctl 配置: /usr/local/nerdctl/…

6月报名 | 海克斯康Actran风机类气动噪声分析培训

您好&#xff01;感谢您长期以来对优飞迪科技与海克斯康的关注与支持。我们诚邀您参加海克斯康Actran风机类气动噪声分析培训&#xff0c;特邀海克斯康原厂讲师将以实操为基础&#xff0c;结合真实案例&#xff0c;手把手帮您解锁噪声仿真关键技术。 活动主题&#xff1a; 海…

【架构之路】微服务中常用的几种通信方式

2024年&#xff0c;计算机相关专业还值得选择吗&#xff1f; 强烈推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站:人工智能 引言 微服务架构由于其灵活性、高可扩展性和易维护性&am…

mysql打开远程访问

这里写目录标题 1.使用navicat进入命令控制板,进入use mysql;2.查询用户表3.更新user表中root用户域属性&#xff0c;%表示允许外部访问4.执行以上语句之后再执行&#xff0c;FLUSH PRIVILEGES;5. 执行授权语句 1.使用navicat进入命令控制板,进入use mysql; use mysql;2.查询用…

NOSQL -- MOGODB

Mogodb简介: 是一个开源的, 高性能, 无模式的文档型数据库. NoSql数据库产品当中的一种, 也是最像关系型数据库的非关系型数据库 使用场景: 针对不同的应用场景, 以及其对应的修改对应数据的频率, 我们可以以此选择需要哪一种类型的数据库 Mongo的使用: 启动: 在解压完成之后…

动手学操作系统(六、获取物理内存容量)

动手学操作系统&#xff08;六、获取物理内存容量&#xff09; 在上一节中&#xff0c;我们介绍了保护模式和实模式的区别&#xff0c;保护模式的最大特点是“大”&#xff0c;“大”是指寻址空间大&#xff0c;在进入保护模式之后&#xff0c;我们还将要接触虚拟内存、内存管…

基于pytorch实现的DenseUnet医学图像分割(腹部多脏器)

1、前言 本章将介绍将densenet的主干网络引入unet中 官方实现的代码&#xff1a;kits19-challenge/network at master nitsaick/kits19-challenge (github.com) 本章实现的项目目录如下&#xff1a; 主要代码有train、evaluate、predict脚本 2、代码介绍 数据预处理脚本 数据…