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

LeetCode 每日一题 2024/5/27-2024/6/2

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 5/27 2028. 找出缺失的观测数据
      • 5/28 2951. 找出峰值
      • 5/29 2981. 找出出现至少三次的最长特殊子字符串 I
      • 5/30 2982. 找出出现至少三次的最长特殊子字符串 II
      • 5/31 2965. 找出缺失和重复的数字
      • 6/1 2928. 给小朋友们分糖果 I
      • 6/2


5/27 2028. 找出缺失的观测数据

算出当前的总和sum(rolls)
算出m+n次的总和mean*(m+n)
后者减去前者就是n次总和s
如果s<n 或者s>6*n 那么不可能存在
先假定n次都是1
再从头开始将1变成6 如果剩余值不能变六就变成剩余值 结束操作

def missingRolls(rolls, mean, n):""":type rolls: List[int]:type mean: int:type n: int:rtype: List[int]"""s = mean*(n+len(rolls))-sum(rolls)if s<n or s>6*n:return []ans =[1]*ns-=nloc = 1while s:if s>=5:ans[loc]+=5loc+=1s-=5else:ans[loc]+=sbreakreturn ans

5/28 2951. 找出峰值

遍历数组
判断当前位置i的值是否大于左右相邻的值

def findPeaks(mountain):""":type mountain: List[int]:rtype: List[int]"""ans = []for i in range(1,len(mountain)-1):if mountain[i]>mountain[i-1] and mountain[i]>mountain[i+1]:ans.append(i)return ans

5/29 2981. 找出出现至少三次的最长特殊子字符串 I

记录每个字符最长的三个长度a>=b>=c
要满足三次出现可以有三种情况a-2,min(a-1,b),c

def maximumLength(s):""":type s: str:rtype: int"""from collections import defaultdictl = defaultdict(list)num = 0for i,c in enumerate(s):num+=1if i+1==len(s) or c!=s[i+1]:l[c].append(num)num=0ans = 0for a in l.values():a.sort(reverse=True)a.extend([0,0])ans = max(ans,a[0]-2,min(a[0]-1,a[1]),a[2])return ans if ans else -1

5/30 2982. 找出出现至少三次的最长特殊子字符串 II

与2981相同
记录每个字符最长的三个长度a>=b>=c
要满足三次出现可以有三种情况a-2,min(a-1,b),c

def maximumLength(s):""":type s: str:rtype: int"""from collections import defaultdictl = defaultdict(list)num = 0for i,c in enumerate(s):num+=1if i+1==len(s) or c!=s[i+1]:l[c].append(num)num=0ans = 0for a in l.values():a.sort(reverse=True)a.extend([0,0])ans = max(ans,a[0]-2,min(a[0]-1,a[1]),a[2])return ans if ans else -1

5/31 2965. 找出缺失和重复的数字

遍历统计每个数出现次数

def findMissingAndRepeatedValues(grid):""":type grid: List[List[int]]:rtype: List[int]"""n = len(grid)m = [0]*(n*n+1)for row in grid:for v in row:m[v]+=1ans = [0,0]for i in range(1,n*n+1):if m[i]==2:ans[0]=ielif m[i]==0:ans[1]=ireturn ans

6/1 2928. 给小朋友们分糖果 I

只有三个小朋友 枚举第一个小朋友i个 第二个小朋友j个 第三个小朋友n-i-j个

def distributeCandies(n, limit):""":type n: int:type limit: int:rtype: int"""ans = 0for i in range(limit+1):for j in range(min(n-i,limit)+1):if n-i-j<=limit:ans+=1return ans

6/2


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

相关文章:

  • BOOST_SREATCH
  • MySQL学习——获取数据库和表格的信息
  • Go语言redis框架 — go-redis
  • C++ | Leetcode C++题解之第125题验证回文串
  • Spring创建对象的多种方式
  • 宝塔部署前后端分离项目手册
  • Leetcode 第 397 场周赛题解
  • Python+Selenium自动化测试项目实战
  • WPS部分快捷操作汇总
  • Kubernetes (K8s) 普及指南
  • Oracle RAC 集群配置共享目录ACFS
  • Google Cloudbuild yaml file 中 entrypoint 和 args 的写法
  • 鸿蒙开发接口图形图像:【@ohos.window (窗口)】
  • LLM 基准测试的深入指南
  • 深入理解Redis事务、事务异常、乐观锁、管道
  • 17、Spring系列-SpringMVC-请求源码流程
  • 对简单工厂模式、工厂方法模式、抽象工厂模式的简单理解
  • PostgreSQL常用插件
  • mysql表字段超过多少影响性能 mysql表多少效率会下降
  • Vue进阶之Vue无代码可视化项目(一)
  • 初识C++ · 模拟实现list
  • 电商运营-2024年6月1日
  • Go跨平台编译
  • 生产计划排产,制定每小时计划产量(“查表法”SQL计算)
  • 视频汇聚管理安防监控平台EasyCVR程序报错“create jwtSecret del server class:0xf98b6040”的原因排查与解决
  • 头歌页面置换算法第2关:计算OPT算法缺页率
  • vscode怎么拷贝插件到另一台电脑
  • 网络协议分析
  • GAMIT目录配置
  • 基于JSP的九宫格日志网站