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

【leetcode——415场周赛】——python前两题

3289. 数字小镇中的捣蛋鬼

数字小镇 Digitville 中,存在一个数字列表 nums,其中包含从 0 到 n - 1 的整数。每个数字本应 只出现一次,然而,有 两个 顽皮的数字额外多出现了一次,使得列表变得比正常情况下更长。

为了恢复 Digitville 的和平,作为小镇中的名侦探,请你找出这两个顽皮的数字。

返回一个长度为 2 的数组,包含这两个数字(顺序任意)。

示例 1:

输入: nums = [0,1,1,0]

输出: [0,1]

解释:

数字 0 和 1 分别在数组中出现了两次。

示例 2:

输入: nums = [0,3,2,1,3,2]

输出: [2,3]

解释:

数字 2 和 3 分别在数组中出现了两次。

示例 3:

输入: nums = [7,1,5,4,3,4,6,0,9,5,8,2]

输出: [4,5]

解释:

数字 4 和 5 分别在数组中出现了两次。

提示:

  • 2 <= n <= 100
  • nums.length == n + 2
  • 0 <= nums[i] < n
  • 输入保证 nums 中 恰好 包含两个重复的元素。
class Solution:def getSneakyNumbers(self, nums: List[int]) -> List[int]:dict1 = Counter(nums)l = []for i in dict1:if dict1[i] > 1:l.append(i)return l

 时间复杂度:o(n),空间复杂度:o(n)

 3290. 最高乘法得分

给你一个大小为 4 的整数数组 a 和一个大小 至少为 4 的整数数组 b

你需要从数组 b 中选择四个下标 i0i1i2, 和 i3,并满足 i0 < i1 < i2 < i3。你的得分将是 a[0] * b[i0] + a[1] * b[i1] + a[2] * b[i2] + a[3] * b[i3] 的值。

返回你能够获得的 最大 得分。

示例 1:

输入: a = [3,2,5,6], b = [2,-6,4,-5,-3,2,-7]

输出: 26

解释:
选择下标 0, 1, 2 和 5。得分为 3 * 2 + 2 * (-6) + 5 * 4 + 6 * 2 = 26

示例 2:

输入: a = [-1,4,5,-2], b = [-5,-1,-3,-2,-4]

输出: -1

解释:
选择下标 0, 1, 3 和 4。得分为 (-1) * (-5) + 4 * (-1) + 5 * (-2) + (-2) * (-4) = -1

提示:

  • a.length == 4
  • 4 <= b.length <= 10**5
  • -105 <= a[i], b[i] <= 10**5

一开始想的是记忆化搜索,但是爆了:

#内存爆了
class Solution:def maxScore(self, a: List[int], b: List[int]) -> int:n = len(b)@cachedef dfs(i : int, ans : int, step : int) -> int:if step == 4:return anselif i >= n or step > 4:return -infreturn max(dfs(i + 1,ans + a[step] * b[i],step + 1),dfs(i + 1,ans,step))return dfs(0,0,0)
#时间爆了
class Solution:def maxScore(self, a: List[int], b: List[int]) -> int:n = len(b)@cachedef dfs(i : int, ans : int, step : int) -> int:if step == 4:return anselif i >= n or step > 4:return -infreturn max(dfs(i + 1,ans + a[step] * b[i],step + 1),dfs(i + 1,ans,step))ans = dfs(0,0,0)dfs.cache_clear()return ans

 最后改了动态规划才好

class Solution:def maxScore(self, a: List[int], b: List[int]) -> int:n = len(b)dp = [[float('-inf')] * 5 for _ in range(n + 1)]dp[0][0] = 0 for i in range(n):for step in range(4, -1, -1):if step > 0:dp[i + 1][step] = max(dp[i + 1][step], dp[i][step - 1] + a[step - 1] * b[i])dp[i + 1][step] = max(dp[i + 1][step], dp[i][step])return dp[n][4]

http://www.lryc.cn/news/438549.html

相关文章:

  • 【CSS in Depth 2 精译_029】5.2 Grid 网格布局中的网格结构剖析(上)
  • ZYNQ LWIP(RAW API) TCP函数学习
  • Spring Boot,在应用程序启动后执行某些 SQL 语句
  • 【SQL】百题计划:SQL最基本的判断和查询。
  • 04_Python数据类型_列表
  • F5设备绑定EIP
  • 使用 PyCharm 新建 Python 项目详解
  • 从0开始学习 RocketMQ:分布式事务消息的实现
  • MySQL 查询数据库的数据总量
  • [C++]——vector
  • 自动驾驶:LQR、ILQR和DDP原理、公式推导以及代码演示(七、CILQR约束条件下的ILQR求解)
  • 随想录笔记-二叉树练习题
  • 华雁智科前端面试题
  • 【iOS】单例模式
  • Linux | 探索 Linux 信号机制:信号的产生和自定义捕捉
  • 递归的时间复杂度分析
  • C++: 二叉树进阶面试题
  • 【HarmonyOS NEXT】实现网络图片保存到手机相册
  • Pytorch详解-数据模块
  • 浅谈openresty
  • 【学习笔记】2024最新版SpringCloud教程
  • Proxyless Service Mesh:下一代微服务架构体系
  • 大数据Flink(一百一十八):SQL水印操作(Watermark)
  • 【QGC】把QGroundControl地面站添加到Ubuntu侧边菜单栏启动
  • PostgreSQL配置主从同步
  • 基于python+django+vue的鲜花商城系统
  • 李飞飞任CEO,空间智能公司World Labs亮相,全明星阵容曝光
  • PyTorch详解-可视化模块
  • Bootstrap 警告信息(Alerts)使用介绍
  • uniapp(H5)设置反向代理,设置成功后页面报错