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

LeetCode 每日一题 2025/7/28-2025/8/3

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


目录

      • 7/28 2044. 统计按位或能得到最大值的子集数目
      • 7/29 2411. 按位或最大的最小子数组长度
      • 7/30 2419. 按位与最大的最长子数组
      • 7/31 2683. 相邻值的按位异或
      • 8/1 118. 杨辉三角
      • 8/2 2561. 重排水果
      • 8/3


7/28 2044. 统计按位或能得到最大值的子集数目

所有数都按位或必定是最大
n位数一共有2^n种可能 用一个n为二进制表示选择的数
如果得到目标值 结果+1

def countMaxOrSubsets(nums):""":type nums: List[int]:rtype: int"""target = 0for num in nums:target |=numn = len(nums)ans = 0for i in range(1,2**n):v = 0for loc in range(n):if i&(1<<loc)>0:v |=nums[loc]if v==target:ans +=1return ans

7/29 2411. 按位或最大的最小子数组长度

当前数值num
如果二进制第i位为1 那么后续不论如何操作肯定是1
如果第i位为0 为了使或值最大 需要后面最近的一个第i位为1的数值
pos[i]记录该二进制位在后续数字钟最近为1的位置
从后往前遍历

def smallestSubarrays(nums):""":type nums: List[int]:rtype: List[int]"""n=len(nums)pos=[-1]*31ans=[0]*nfor i in range(n-1,-1,-1):j=ifor bit in range(31):if (nums[i]&(1<<bit))==0:if pos[bit]!=-1:j=max(j,pos[bit])else:pos[bit]=ians[i]=j-i+1return ans

7/30 2419. 按位与最大的最长子数组

两数按位与 结果不会大于两个数中的较大值
题目可以转换为 数组中最大值连续最长有几位

def longestSubarray(nums):""":type nums: List[int]:rtype: int"""maxv=max(nums)cur,ans=0,0if nums[0]==maxv:cur=1for i in range(1,len(nums)):if nums[i]==maxv:cur+=1else:ans=max(cur,ans)cur=0return max(ans,cur)

7/31 2683. 相邻值的按位异或

将derived所有数异或 及将原始数组每个数异或了两次
如果存在原始数组必定结果为0

def doesValidArrayExist(derived):""":type derived: List[int]:rtype: bool"""ans=0for v in derived:ans ^=vreturn ans==0

8/1 118. 杨辉三角

按题意一行行生成

def generate(numRows):""":type numRows: int:rtype: List[List[int]]"""if numRows==1:return [[1]]cur=[1]ans=[[1]]for i in range(numRows-1):tmp=[1]for j in range(len(cur)-1):tmp.append(cur[j]+cur[j+1])tmp.append(1)ans.append(tmp)cur=tmp[:]return ans

8/2 2561. 重排水果

要满足最后两边一样 任意成本必须出现偶数次
统计两个果篮成本出现次数count1,count2
对于某个成本x 必须满足count1[x]+count2[x]为偶数
如果count1[x]>count2[x] 说明需要从果篮1交换(count1[x]-count2[x])/2 到果篮2
反之亦然
将需要交换的成本放入带交换list中 从小到大排序
为了成本最低 将最小成本与最大成本交换
直接交换成本x1
间接交换通过最小值m (x1,m) (m,x2)通过两次交换完成x1,x2的互换 成本m*2

def minCost(basket1, basket2):""":type basket1: List[int]:type basket2: List[int]:rtype: int"""from collections import Counterc=Counter()m=float('inf')for b in basket1:c[b]+=1m=min(m,b)for b in basket2:c[b]-=1m=min(m,b)l=[]for v,num in c.items():if num%2:return -1l.extend([v]*(abs(num)//2))if not l:return 0l.sort()ans=0for x in l[:len(l)//2]:ans+=min(2*m,x)return ans

8/3


http://www.dtcms.com/a/310968.html

相关文章:

  • js的BOM
  • Redis核心机制与实践深度解析:从持久化到分布式锁
  • 中科院开源HYPIR图像复原大模型:1.7秒,老照片变8K画质
  • 北斗变形监测在地质灾害预警中的应用
  • 机器学习消融实验:方法论演进、跨领域应用与前沿趋势
  • sqli-labs:Less-19关卡详细解析
  • 基于单片机智能雨刷器/汽车刮水器设计
  • CCF IVC 2025“汽车安全攻防赛” -- Crypto -- WriteUp
  • 进程 Vs 线程
  • 小迪23年-22~27——php简单回顾(1)
  • 滚珠花键在汽车制造中有哪些高要求?
  • 【05】VisionMaster入门到精通——圆查找
  • 内网渗透——红日靶场七
  • 排序算法-堆排序
  • MybatisPlus-静态工具DB
  • 在 AKS 中运行 Azure DevOps 私有代理-1
  • 云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
  • 基于 LFU 策略的存储缓存系统设计与实现
  • 深入 Go 底层原理(八):sync 包的实现剖析
  • Node.js 操作 MongoDB
  • 【机器学习】“回归“算法模型的三个评估指标:MAE(衡量预测准确性)、MSE(放大大误差)、R²(说明模型解释能力)
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • Oracle 11gR2 Clusterware应知应会
  • 【unity组件_Transform 】
  • 设计模式篇:在前端,我们如何“重构”观察者、策略和装饰器模式
  • 蓝桥杯----串口
  • 内存、硬盘与缓存的技术原理及特性解析
  • 《软件测试与质量控制》实验报告二 单元测试
  • Ubuntu系统VScode实现opencv(c++)视频及摄像头使用
  • 空间平面旋转与xoy平行