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

LeetCode 每日一题 2025/8/11-2025/8/17

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


目录

      • 8/11 2438. 二的幂数组中查询范围内的乘积
      • 8/12 2787. 将一个数字表示成幂的和的方案数
      • 8/13 326. 3 的幂
      • 8/14 1780. 判断一个数字是否可以表示成三的幂的和
      • 8/15 342. 4的幂
      • 8/16 1323. 6 和 9 组成的最大数字
      • 8/17 837. 新 21 点


8/11 2438. 二的幂数组中查询范围内的乘积

将n转换为二进制 如果第k位为1 那么包含2^k
得到所有元素后 预处理res[i][j]保存 [i~j]的积


def productQueries(n, queries):""":type n: int:type queries: List[List[int]]:rtype: List[int]"""MOD=10**9+7bins,cur=[],1while n>0:if n%2==1:bins.append(cur)n//=2cur*=2m=len(bins)res=[[0]*m for _ in range(m)]for i in range(m):cur=1for j in range(i,m):cur=cur*bins[j]%MODres[i][j]=curans=[]for l,r in queries:ans.append(res[l][r])return ans

8/12 2787. 将一个数字表示成幂的和的方案数

dp 背包
从前i个数字中选取j个数字

def numberOfWays(n, x):""":type n: int:type x: int:rtype: int"""MOD=10**9+7dp=[0]*(n+1)dp[0]=1for i in range(1,n+1):v=i**xif v>n:breakfor j in range(n,v-1,-1):dp[j]=(dp[j]+dp[j-v])%MODreturn dp[n]

8/13 326. 3 的幂

不断除以3 出现余数说明不满足

def isPowerOfThree(n):""":type n: int:rtype: bool"""while n>1:if n%3==0:n=n//3else:return Falsereturn True if n==1 else False

8/14 1780. 判断一个数字是否可以表示成三的幂的和

假设n = 3a+3b+3^c+… a<b<c
每一轮除以3 经过a轮后得到 1+3(b-a)+3(c-a)
此时余数为1 因为幂不同 所以在同一轮中余数只能为0或1
如果得到余数2说明不满足

def checkPowersOfThree(n):""":type n: int:rtype: bool"""while n>0:if n%3==2:return Falsen//=3return True

8/15 342. 4的幂

条件:
1.不能为负数
2.二进制只能出现1个1
3.1需要在二进制的奇数位 1 100 10000 看出规律 包含偶数个0

def isPowerOfFour(n):""":type n: int:rtype: bool"""if n <0 :return Falseif n&(n-1)>0:return Falses = bin(n)[2:]return  s.count('0')%2==0

8/16 1323. 6 和 9 组成的最大数字

从最高位开始往后遇到的第一个6变成9
6变9多了3 根据位置增加10^i*3

def maximum69Number (num):""":type num: int:rtype: int"""cur=0i=-1ori = numwhile num:if num%10==6:i=curcur+=1num//=10return ori if i==-1 else ori+3*(10**i)

8/17 837. 新 21 点

dp
最大能够抽到k+maxPts-1
dp[x]代表从x开始获胜的概率
dp相邻项计算差分
dp[i]-dp[i+1] = (dp[i+1]-dp[i+maxPts+1])/maxPts

def new21Game(n, k, maxPts):""":type n: int:type k: int:type maxPts: int:rtype: float"""if k==0:return 1.0dp=[0.0]*(k+maxPts)for i in range(k,min(n,k+maxPts-1)+1):dp[i]=1.0dp[k-1]=float(min(n-k+1,maxPts))/maxPtsfor i in range(k-2,-1,-1):dp[i]=dp[i+1]-(dp[i+maxPts+1]-dp[i+1])/maxPtsreturn dp[0]

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

相关文章:

  • STM32学习笔记14-I2C硬件控制
  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • 朝花夕拾(七)--------从混淆矩阵到分类报告全面解析​
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • 安全基础DAY6-服务器安全检测和防御技术
  • 超级云平台:重构数字生态的“超级连接器“
  • 2025年- H98-Lc206--51.N皇后(回溯)--Java版
  • Hadoop - 1:Hadoop 技术解析;Hadoop是什么;Hadoop优势;Hadoop组成;HDFS、YARN、MapReduce 三者关系
  • <数据集>遥感飞机识别数据集<目标检测>
  • Ubuntu下无法在huggingface下载指定模型的解决方法
  • FreeRTOS学习笔记(二)
  • MySQL的多版本并发控制(MVCC):
  • Windows系统上使用GIT
  • 基于JS实现的中国象棋AI系统:多模块协同决策与分析
  • 【C语言16天强化训练】从基础入门到进阶:Day 2
  • 计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
  • 数据转换细节揭秘:ETL如何精准映射复杂业务逻辑
  • 深入解析StatefulSet与K8s服务管理
  • 力扣 hot100 Day77
  • LeetCode:无重复字符的最长子串
  • 08.常见文本处理工具
  • vue从入门到精通:轻松搭建第一个vue项目
  • Gemini CLI 系统配置小结
  • SpringBoot3整合OpenAPI3(Swagger3)完整指南
  • EasyExcel篇
  • PDF处理控件Aspose.PDF教程:将 PNG 合并为 PDF
  • 牛客周赛 Round 105(小苯的xor构造/小苯的权值计算/小苯的01矩阵构造/小苯的重排构造/小苯的xor图/小苯的前缀gcd构造)
  • Android RxBinding 使用指南:响应式UI编程利器
  • Linux网络服务(一)——计算机网络参考模型与子网划分
  • 【MyBatis-Plus】一、快速入门