从零开始的力扣刷题记录-第六十九天

news/2024/11/25 17:22:04/

力扣每日四题

  • 2485. 找出中枢整数-简单
  • 1935. 可以输入的最大单词数-简单
  • 983. 最低票价-中等
  • 357. 统计各位数字都不同的数字个数-中等
  • 总结

2485. 找出中枢整数-简单

题目描述:
给你一个正整数 n ,找出满足下述条件的 中枢整数 x :
1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。
返回中枢整数 x 。如果不存在中枢整数,则返回 -1 。题目保证对于给定的输入,至多存在一个中枢整数。

题解:
双指针分别从前后向中间靠拢,计算前后部分的和是否相等。这个题有数学公式可以直接找出或判断,所以其实可以在O(1)时间复杂度内做出来

代码(Go):

func pivotInteger(n int) int {p,nump := 1,0q,numq := n,0for p <= q{if p == q{if nump == numq{return p}else{return - 1}}if nump < numq{nump += pp++}else{numq += qq--}}return -1
}

1935. 可以输入的最大单词数-简单

题目描述:
键盘出现了一些故障,有些字母键无法正常工作。而键盘上所有其他键都能够正常工作。
给你一个由若干单词组成的字符串 text ,单词间由单个空格组成(不含前导和尾随空格);另有一个字符串 brokenLetters ,由所有已损坏的不同字母键组成,返回你可以使用此键盘完全输入的 text 中单词的数目。

题解:
哈希表存储损坏字符,遍历输入字符查看是否损坏

代码(Go):

func canBeTypedWords(text string, brokenLetters string) int {s := strings.Split(text," ")dict := map[rune]int{}re := 0for _,v := range brokenLetters{dict[v] = 1}for _,v := range s{flag := 1for _,b := range v{if dict[b] == 1{flag = 0break}}if flag == 1{re++}}return re
}

983. 最低票价-中等

题目描述:
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。
火车票有 三种不同的销售方式 :
一张 为期一天 的通行证售价为 costs[0] 美元;
一张 为期七天 的通行证售价为 costs[1] 美元;
一张 为期三十天 的通行证售价为 costs[2] 美元。
通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张 为期 7 天 的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。
返回 你想要完成在给定的列表 days 中列出的每一天的旅行所需要的最低消费 。

题解:
这个题官方题解没太看懂,我和官方题解做法不一样。思路就是从后往前找时间点,票价总消费dp[i]应该在三个值里取最小,即上一次的消费加costs[0],七天内距今最远的消费加costs[1],30天内距今最远的消费加costs[2],实际上dp[i]在这里表示的是i天以前消费的总和,第i天要买什么票是取决于后面的

代码(Go):

func mincostTickets(days []int, costs []int) int {dp := make([]int,len(days) + 1)dp[0] = 0for i := 0;i < len(days);i++{temp7,temp30 := i,ifor j := 0;j < i;j++{if days[i] - days[j] < 7{temp7 = jbreak}}for j := 0;j < i;j++{if days[i] - days[j] < 30{temp30 = jbreak}}dp[i + 1] = min(dp[i] + costs[0],min(dp[temp7] + costs[1],dp[temp30] + costs[2]))}return dp[len(days)]
}func min(x int,y int) int {if x > y{return y}else{return x}
}

357. 统计各位数字都不同的数字个数-中等

题目描述:
给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。

题解:
这个题有点像之前粉刷房子那个,不过这个更简单,本质是逐位选择数字,已选择过的数字不能再次被选择,把小于n位的数字数量都加起来

代码(Go):

func countNumbersWithUniqueDigits(n int) int {if n == 0 {return 1}if n == 1 {return 10}re, mul := 10, 9for i := 0;i < n - 1;i++ {mul *= 9 - ire += mul}return re
}

总结

动态规划的题变化太大了,每个题感觉思路都差很多,感觉只能靠多做多见靠经验来做了


http://www.ppmy.cn/news/586563.html

相关文章

超全汇总,性能测试常用指标大全(重要)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 两种性能指标 业…

发送图文并茂的html格式的邮件

本文介绍如何生成和发送包含图表和表格的邮件&#xff0c;涉及echarts图表转换为图片、图片内嵌到html邮件内容中、html邮件内容生成、邮件发送方法等 一、图表处理 因为html格式的邮件不支持echarts,也不支持js执行&#xff0c;所以图表需要转换为图片内嵌在邮件内容中 因为平…

遗传算法(Python)

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D# 设定参数 DNA_SIZE 24 # DNA的长度 POP_SIZE 200 # 种群大小 CROSSOVER_RATE 0.8 # 交叉概率 MUTATION_RATE 0.005 # 变异概率 N_GENERATION…

EasyPoi导入Excel中的图片,空指针异常

官方文档&#xff1a; 1.1 介绍 - Powered by MinDoc 导入easypoi依赖&#xff0c;版本可以选择最新的 <!--easyPoi--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.1.2&l…

【SA8295P 源码分析】23 - QNX Ethernet MAC 驱动 之 emac1_config.conf 配置文件解析

【SA8295P 源码分析】23 - QNX Ethernet MAC 驱动 之 emac1_config.conf 配置文件解析 系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P 源码分析】23 - QNX Ethernet MAC 驱动 之 emac1_config.conf 配置文件解析》 主要参数如下: hw_…

5分钟自建可视化平台,在线拖拽组件也太方便了!

一、前言 我们在完成 C 端用户的业务需求时&#xff0c;发现大量电商推广页面的逻辑复杂度和交互程度都比较低&#xff0c;却要消耗大量的开发资源。同时在后台管理系统的开发过程中&#xff0c;我们也发现一些相同套路的页面在不同场景下需要重复开发&#xff0c;即使我们封装…

emoji表情符号,unicode表情符号

目录 &#x1f60e;前言&#x1f468;‍&#x1f4bb;使用✈️Unicode 1.1 版本新增☙ Unicode 3.0 版本新增♻️Unicode 3.2 版本新增☕Unicode 4.0 版本新增&#x1f028;Unicode 5.1 版本新增⚽ Unicode 5.2 版本新增&#x1f30a;Unicode 6.0 版本新增&#x1f619;Unicode…

Redis 全面入门教程

目录 一、安装和启动 Redis二、Redis 基本操作1. 连接 Redis2. 设置和获取键值对3. 删除键值对4. 判断键是否存在&#xff1a;5. 设置键的过期时间&#xff1a;6. 查询键的剩余生存时间7. 查看所有键 三、数据结构和高级功能1. 字符串&#xff08;String&#xff09;2. 列表&am…