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

LeetCode 每日一题 2025/6/30-2025/7/6

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


目录

      • 6/30 594. 最长和谐子序列
      • 7/1 3330. 找到初始输入字符串 I
      • 7/2 3333. 找到初始输入字符串 II
      • 7/3 3304. 找出第 K 个字符 I
      • 7/4 3307. 找出第 K 个字符 II
      • 7/5 1394. 找出数组中的幸运数
      • 7/6 1865. 找出和为指定值的下标对


6/30 594. 最长和谐子序列

m记录每一个数字出现的次数
l记录去重后从小到大排序的所有数字

def findLHS(nums):""":type nums: List[int]:rtype: int"""from collections import defaultdictm = defaultdict(int)l = list(set(nums))l.sort()for num in nums:m[num]+=1ans = 0for i in range(len(l)-1):if l[i]+1==l[i+1]:v = m[l[i]]+m[l[i+1]]ans = max(ans,v)return ans

7/1 3330. 找到初始输入字符串 I

如果当前位置字符串和之前的一样 那么有可能是多打的

def possibleStringCount(word):""":type word: str:rtype: int"""ans=1for i in range(1,len(word)):if word[i]==word[i-1]:ans+=1return ans

7/2 3333. 找到初始输入字符串 II

计算不考虑k的限制可以有多少情况
再减去小于k的情况即可

def possibleStringCount(word, k):""":type word: str:type k: int:rtype: int"""from itertools import accumulateMOD=10**9+7n=len(word)if n<k:return 0ans = 1cnt = 0cnts=[]for i in range(n):cnt +=1if i==n-1 or word[i]!=word[i+1]:if cnt>1:if k>0:cnts.append(cnt-1)ans = ans*cnt%MODk-=1cnt=0if k<=0:return ansf=[[0]*k for _ in range(len(cnts)+1)]f[0]=[1]*kfor i,c in enumerate(cnts):s=list(accumulate(f[i],initial=0))for j in range(k):f[i+1][j]=(s[j+1]-s[max(j-c,0)])%MODreturn (ans-f[-1][-1])%MOD

7/3 3304. 找出第 K 个字符 I

长度从1->2->4->8…
对于位置k的字符 可以通过k-1的二进制中1的个数来判断从起始位置变化了几次

def kthCharacter(k):""":type k: int:rtype: str"""k-=1ans=0while k:ans+= k%2k=k//2return chr(ord('a')+ans)

7/4 3307. 找出第 K 个字符 II

计算能够得到k个字符需要操作的次数
如果第i次操作 和k相关的字符在字符串右半侧 那么需要增加operations[i]

def kthCharacter(k, operations):""":type k: int:type operations: List[int]:rtype: str"""m=(k-1).bit_length()add=0for i in range(m-1,-1,-1):if k> 1<<i:add+=operations[i]k-=1<<ireturn chr(ord('a')+add%26)

7/5 1394. 找出数组中的幸运数

统计每个数出现的次数 寻找幸运数

def findLucky(arr):""":type arr: List[int]:rtype: int"""from collections import defaultdictm=defaultdict(int)for num in arr:m[num]+=1ans=-1for v in m:if v==m[v]:ans=max(ans,v)return ans

7/6 1865. 找出和为指定值的下标对

nums1不变 即找到nums2中值为tot-val的数量

class FindSumPairs(object):from collections import defaultdictdef __init__(self, nums1, nums2):""":type nums1: List[int]:type nums2: List[int]"""self.m=defaultdict(int)self.nums1=nums1self.nums2=nums2for num in nums2:self.m[num]+=1def add(self, index, val):""":type index: int:type val: int:rtype: None"""self.m[self.nums2[index]]-=1self.nums2[index]+=valself.m[self.nums2[index]]+=1def count(self, tot):""":type tot: int:rtype: int"""ans=0for x in self.nums1:ans+=self.m[tot-x]return ans

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

相关文章:

  • WPF学习笔记(26)CommunityToolkit.Mvvm与MaterialDesignThemes
  • 端到端矢量化地图构建与规划
  • 【机器学习笔记 Ⅱ】1 神经网络
  • 从源码到思想:OneCode框架模块化设计如何解决前端大型应用痛点
  • RDF安装使用教程
  • 408第三季part2 - 计算机网络 - 传输层
  • 计算机网络实验——配置ACL
  • 植物大战僵尸杂交重制版1.0,经典焕新,重燃策略塔防之火
  • C 语言指针与作用域详解
  • 计算机网络实验——互联网安全实验
  • SQL Server从入门到项目实践(超值版)读书笔记 20
  • Solidity——什么是selfdestruct
  • 数据结构---链表结构体、指针深入理解(三)
  • nginx的使用
  • 机器学习手写字体识别系统:技术演进与应用实践
  • Qt:QPushButton、QRadioButton、QCheckBox
  • 1.1_4 计算机网络的分类
  • ARMv8 创建3级页表示例
  • QML与C++交互之QML端信号绑定C++端槽函数
  • Linux proxy设置
  • TensorFlow 开发中,合理的项目目录结构
  • 8.4.2_2堆的插入删除
  • [netty5: WebSocketClientHandshaker WebSocketClientHandshakerFactory]-源码分析
  • WSL2配置freesurfer
  • Docker Model Runner Chat
  • 嵌套容器是隐射宿主机的路径而不是容器的路径
  • 深入解析 document.write、innerHTML 和 innerText 的区别
  • 使用PyTorch实现Softmax回归(Mnist手写数字识别)
  • linux下进程之间socket通信c程序例程
  • 6、构建更加丰富的页面