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

LeetCode 每日一题 2025/6/16-2025/6/22

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


目录

      • 6/16 2016. 增量元素之间的最大差值
      • 6/17 3405. 统计恰好有 K 个相等相邻元素的数组数目
      • 6/18 2966. 划分数组并满足最大差限制
      • 6/19 2294. 划分数组使最大差为 K
      • 6/20 3443. K 次修改后的最大曼哈顿距离
      • 6/21 3085. 成为 K 特殊字符串需要删除的最少字符数
      • 6/22 2138. 将字符串拆分为若干长度为 k 的组


6/16 2016. 增量元素之间的最大差值

为了使差值最大 尽量使得nums[i]小
从左到右 使用minv 记录当前位置之前的最小值

def maximumDifference(nums):""":type nums: List[int]:rtype: int"""ans = -1minv = nums[0]for j in range(1,len(nums)):if nums[j]>minv:ans=max(ans,nums[j]-minv)minv=min(minv,nums[j])return ans

6/17 3405. 统计恰好有 K 个相等相邻元素的数组数目

k对相邻元素相同 n-1-k对相邻元素不同
不同的可以看作分割线 得到n-k段子数组
C(n-1,k)m(m-1)^(n-k-1)

def countGoodArrays(n, m, k):""":type n: int:type m: int:type k: int:rtype: int"""MOD=10**9+7MX=10**5f=[0]*MXinvf=[0]*MXf[0]=1for i in range(1,MX):f[i]=f[i-1]*i%MODinvf[MX-1]=pow(f[-1], -1,MOD)for i in range(MX-1,0,-1):invf[i-1]=invf[i]*i%MODdef comb(n,m):return f[n]*invf[m]*invf[n-m]%MODreturn comb(n-1,k)*m*pow(m-1, n-1-k,MOD)%MOD

6/18 2966. 划分数组并满足最大差限制

排序后 依次分组必定是差值最小的

def divideArray(nums, k):""":type nums: List[int]:type k: int:rtype: List[List[int]]"""nums.sort()ans = []for i in range(0,len(nums),3):if nums[i+2]-nums[i]>k:return []ans.append(nums[i:i+3])return ans

6/19 2294. 划分数组使最大差为 K

从小到大排列 尽可能排进同一个序列

def partitionArray(nums, k):""":type nums: List[int]:type k: int:rtype: int"""nums.sort()ans=1cur=nums[0]for num in nums[1:]:if cur+k<num:cur=numans+=1return ans

6/20 3443. K 次修改后的最大曼哈顿距离

东西、南北互不影响
对于一串方向 修改其中较少的方向 可以使距离更远

def maxDistance(s, k):""":type s: str:type k: int:rtype: int"""NS,EW=0,0ans=0for i in range(len(s)):if s[i]=='N':NS+=1elif s[i]=='S':NS-=1elif s[i]=='E':EW+=1elif s[i]=='W':EW-=1ans = max(ans,min(abs(NS)+abs(EW)+2*k,i+1))return ans

6/21 3085. 成为 K 特殊字符串需要删除的最少字符数

一共26个字母 枚举每个字母成为最少字符的情况

def minimumDeletions(word, k):""":type word: str:type k: int:rtype: int"""from collections import defaultdictcnt=defaultdict(int)for w in word:cnt[w]+=1ans = len(word)for c in cnt.values():d = 0for w in cnt.values():if c>w:d+=welif w>c+k:d+=w-c-kans=min(ans,d)return ans

6/22 2138. 将字符串拆分为若干长度为 k 的组

依次取k个生成放入ans 最后如果不足k 则补充fill

def divideString(s, k, fill):""":type s: str:type k: int:type fill: str:rtype: List[str]"""n=len(s)ans=[]for i in range(0,n,k):if i+k<=n:ans.append(s[i:i+k])else:ans.append(s[i:]+fill*(k-n%k))return ans

相关文章:

  • 【DDD】——带你领略领域驱动设计的独特魅力
  • winform mvvm
  • 案例练习二
  • Unity3D 屏幕点击特效
  • 【前后前】导入Excel文件闭环模型:Vue3前端上传Excel文件,【Java后端接收、解析、返回数据】,Vue3前端接收展示数据
  • 「Linux文件及目录管理」vi、vim编辑器
  • Azure Devops
  • 【递归,搜索与回溯算法】记忆化搜索(二)
  • 深度实战|星环OS三大创新场景解密:如何用确定性技术重构智能汽车安全与体验?
  • 【旧题新解】第 20 集 输出保留 3 位小数的浮点数
  • 解决qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““ ...
  • MySQL安装与配置【windowsMac】
  • 15.3 LLaMA 3+LangChain实战:智能点餐Agent多轮对话设计落地,订单准确率提升90%!
  • B004基于STM32F401单片机简易交通灯实训数码管显示设计仿真资料
  • Vue3解析Spring Boot ResponseEntity
  • Day39 图像数据与显存
  • 关于uniapp解析SSE响应数据的处理
  • 如何用AI开发完整的小程序<7>—让AI微调UI排版
  • jxWebUI--系统说明
  • 企业级安全实践:SSL 加密与权限管理(二)
  • 一级水蜜桃/荥阳seo
  • 网站建设年度总结/世界足球排名前100
  • 企业国际网站建设/2021年网络热点舆论
  • 政府门户网站安全建设公司/seo关键词优化排名软件
  • 商务型网站怎么运作/网站优化关键词价格
  • 怎么快速做网站文章/广州市疫情最新