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

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.xdnf.cn/news/16959.html

相关文章:

  • gcc-arm-none-eabi安装后,找不到libgcc.a的拉置
  • Java基础暑假每日一练
  • 集成电路学习:什么是CMSIS微控制器软件接口标准
  • Json Jsoncpp
  • sqli-labs:Less-20关卡详细解析
  • Gossip 协议
  • 用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
  • 关于Web前端安全防御之点击劫持的原理及防御措施
  • OpenCV HSV与RGB颜色模型的区别
  • Elasticsearch+Logstash+Filebeat+Kibana单机部署
  • 论文笔记:Bundle Recommendation and Generation with Graph Neural Networks
  • OpenCV 全解读:核心、源码结构与图像/视频渲染能力深度对比
  • 电力系统分析笔记:发电机与变压器的数学建模与运行状态详解
  • 图漾AGV行业常用相机使用文档
  • Unity —— Android 应用构建与发布​
  • 边缘计算优化!陌讯轻量化模型实现路面裂缝误检率↓78%
  • Java函数式编程之【Stream终止操作】【中】【通用约简reduce】
  • 机器学习sklearn:聚类
  • Python编程基础与实践:Python函数编程入门
  • 通过解决docker network connect实现同一个宿主机不同网络的容器间通信
  • Flutter dart运算符
  • synchronized 深度剖析:从语法到锁升级的完整演进
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
  • shell脚本的语法使用及例题
  • Java函数式编程之【Stream终止操作】【下】【三】【收集操作collect()与分组分区】【下游收集器】
  • 一个可以检测本机的字节顺序,并对任意数据进行字节顺序的反转操作的代码。
  • 热能小车cad【12张】三维图+设计说明书
  • 解决IDEA无法克隆GitHub上的工程的问题
  • STM32F103C8T6 BC20模块采集温湿度和经纬度发送到ONENET
  • AI+向量化