当前位置: 首页 > news >正文

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

  • 博客主页:誓则盟约
  • 系列专栏: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 mathif purchaseAmount%10>=5:key=math.ceil(purchaseAmount/10)*10return 100-keyelif 0<purchaseAmount%10<5:return 100-purchaseAmount//10*10else: 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 0if n==1: return 1li=[]v=0for 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. 代码实现能力,将思路转化为实际的代码。

 

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

相关文章:

  • Django 连接mysql数据库配置
  • 在Linux环境中通过Docker运行swift
  • 浔川python社官方警告——浔川总社部、浔川社团举报中心
  • 高效数据处理的前沿:【C++】、【Redis】、【人工智能】与【大数据】的深度整合
  • 设计模式之MVC模式
  • Vue CLI 4与项目构建实战指南
  • 微服务之网关
  • Springer投稿流程——Cybersecurity
  • 探索 doc 和 docx 文件格式的区别
  • 吴恩达2022机器学习专项课程C2W3:实验Lab_01模型评估与选择
  • Java数据结构与算法(组合问题回溯算法)
  • http协议,tomcat的作用
  • 【机器学习】机器学习与金融科技在智能投资中的融合应用与性能优化新探索
  • centos下创建raid6磁盘阵列
  • 5 分支结构程序-5.1 关系运算符和表达式
  • 【347天】每日项目总结系列085(2018.01.18)
  • Apache Pulsar 2.1 重磅发布
  • co.js - 让异步代码同步化
  • CODING 缺陷管理功能正式开始公测
  • Javascript基础之Array数组API
  • js面向对象
  • log4j2输出到kafka
  • Magento 1.x 中文订单打印乱码
  • nodejs:开发并发布一个nodejs包
  • PHP 7 修改了什么呢 -- 2
  • SegmentFault 2015 Top Rank
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue 重置组件到初始状态
  • Vue全家桶实现一个Web App
  • 官方解决所有 npm 全局安装权限问题
  • 讲清楚之javascript作用域
  • 前端面试之闭包
  • 使用 QuickBI 搭建酷炫可视化分析
  • 探索 JS 中的模块化
  • 微信小程序填坑清单
  • 我看到的前端
  • 译米田引理
  • 【云吞铺子】性能抖动剖析(二)
  • ​批处理文件中的errorlevel用法
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #在 README.md 中生成项目目录结构
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2)nginx 安装、启停
  • (C11) 泛型表达式
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十六)视图变换 正交投影 透视投影
  • (四)进入MySQL 【事务】
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据