LeetCode 每日一题 2024/4/22-2024/4/28

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


目录

      • 4/22 377. 组合总和 Ⅳ
      • 4/23 1052. 爱生气的书店老板
      • 4/24 2385. 感染二叉树需要的总时间
      • 4/25 2739. 总行驶距离
      • 4/26 1146. 快照数组
      • 4/27 2639. 查询网格图中每一列的宽度
      • 4/28 1017. 负二进制转换


4/22 377. 组合总和 Ⅳ

mem[x]记录数字x拥有的组合个数

def combinationSum4(nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: int
    """
    mem={}
    mem[0]=1
    
    def check(num):
        if num in mem:
            return mem[num]
        ans = 0
        for v in nums:
            if v<=num:
                ans += check(num-v)
        mem[num]=ans
        return ans
    return check(target)



4/23 1052. 爱生气的书店老板

先将不生气的都相加 并设置那时顾客为0
题目变为 顾客列表 连续X分钟达到最多

def maxSatisfied(customers, grumpy,minutes):
    """
    :type customers: List[int]
    :type grumpy: List[int]
    :type X: int
    :rtype: int
    """
    ret = 0
    left = 0
    right = 0 
    
    for i in range(len(customers)):
        if grumpy[i]==0:
            ret += customers[i]
            customers[i] = 0
    
    tmp = ret
    while right<len(customers):
        tmp += customers[right]
        if right-left+1>minutes:
            tmp-=customers[left]
            left+=1
        right+=1
        ret = max(ret,tmp)
    return ret



4/24 2385. 感染二叉树需要的总时间

BFS将数转化为图
再根据图来搜索最远距离

class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
def amountOfTime1(root, start):
    """
    :type root: Optional[TreeNode]
    :type start: int
    :rtype: int
    """
    from collections import defaultdict
    m = defaultdict(list)
    l=[root]
    while l:
        tmp = []
        for node in l:
            if node.left:
                m[node.val].append(node.left.val)
                m[node.left.val].append(node.val)
                tmp.append(node.left)
            if node.right:
                m[node.val].append(node.right.val)
                m[node.right.val].append(node.val)
                tmp.append(node.right)
        l=tmp
    
    l=[start]
    ans = 0
    mem = set()
    while l:
        tmp = []
        for cur in l:
            mem.add(cur)
            for v in m[cur]:
                if v not in mem:
                    tmp.append(v)
        ans+=1
    return ans-1



4/25 2739. 总行驶距离

主油箱的油 只要大于4l即可从副油箱取一升油 凑成5l
副油箱能够用掉的油为 min((mainTank-1)//4,additionalTank)

def distanceTraveled(mainTank, additionalTank):
    """
    :type mainTank: int
    :type additionalTank: int
    :rtype: int
    """
    return (mainTank+min((mainTank-1)//4,additionalTank))*10



4/26 1146. 快照数组

快照时无需记录整个数组
只要记录与前一份快照之间的修改
使用history[x]记录x位置元素的修改记录(snapid,value)
查询一个ind位置某个id的数据时
只要在history[ind]中二分找到快照编号小于id的最后一条修改记录值即可

class SnapshotArray(object):

    
    def __init__(self, length):
        """
        :type length: int
        """
        from collections import defaultdict
        self.curid = 0
        self.history = defaultdict(list)


    def set(self, index, val):
        """
        :type index: int
        :type val: int
        :rtype: None
        """
        self.history[index].append((self.curid,val))


    def snap(self):
        """
        :rtype: int
        """
        self.curid +=1
        return self.curid-1


    def get(self, index, snap_id):
        """
        :type index: int
        :type snap_id: int
        :rtype: int
        """
        import bisect
        j = bisect.bisect_left(self.history[index], (snap_id+1,))-1
        return self.history[index][j][1] if j>=0 else 0




4/27 2639. 查询网格图中每一列的宽度

对每一列中的每个数进行判断其宽度

def findColumnWidth(grid):
    """
    :type grid: List[List[int]]
    :rtype: List[int]
    """
    m,n = len(grid),len(grid[0])
    ans = [0]*n
    def check(num):
        cur = 0
        if num<=0:
            cur = 1
            num = -num
        while num>0:
            num = num//10
            cur+=1
        return cur
    for j in range(n):
        cur = 0
        for i in range(m):
            cur = max(cur,check(grid[i][j]))
        ans[j]=cur
    return ans



4/28 1017. 负二进制转换

先转换为正常二进制
对于奇数位 0,2,4,8 不会产生影响
对于偶数位 1,3,5 需要负二进制增加后一位相加实现
例如 2^3=8 需要(-2)4+(-2)3=16-8=8

def baseNeg2(n):
    """
    :type n: int
    :rtype: str
    """
    if n==0:
        return "0"
    l = [0]*40
    tmp = n
    cur = 0
    while tmp>0:
        l[cur]=tmp%2
        tmp//=2
        cur+=1
    cur = 0
    while cur<35:
        l[cur+1]+=l[cur]//2
        l[cur] = l[cur]%2
        if cur%2==0:
            cur +=1
            continue
        if l[cur]==1:
            l[cur+1]+=1
        cur+=1
    for i in range(29,-1,-1):
        if l[i]==1:
            cur = i
            break
    return "".join([str(l[loc]) for loc in range(cur,-1,-1)])
          



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark-机器学习(6)分类学习之支持向量机

在之前的文章中&#xff0c;我们学习了分类学习之朴素贝叶斯算法&#xff0c;并带来简单案例&#xff0c;学习用法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢…

基于YOLOV8+Pyqt5无人机航拍太阳能电池板检测系统

1.YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术&#xff0c;它基于先前YOLO版本在目标检测任务上的成功&#xff0c;进一步提升了性能和灵活性&#xff0c;在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上&#xff0c;YOLOv8 引入了新的功能和优化&#xff0c;…

SpringBoot 常用注解总结超详细(面试)

目录 一、组件相关&#x1f381; Controller Service Repository Component 二、依赖注入相关&#x1f349; Autowired Resource 根据类型注入&#xff08;By Type&#xff09; 根据名称注入&#xff08;By Name&#xff09; 区别 Qualifier Resource 和 Qualifie…

C语言浮点型数据在内存中的存储及取出等的介绍

文章目录 前言一、浮点型在内存中的存储二、浮点数存储规则三、浮点数在内存中的存储&#xff08;32位&#xff09;float类型四、浮点数在内存中的存储&#xff08;64位&#xff09;double类型五、指数E从内存中取出分成三种情况1. E不全为0或不全为12. E全为03. E全为1 六、有…

设计模式之工厂模式FactoryPattern(二)

一、简单工厂 package com.xu.demo.factoryPattern;/*** 简单工厂模式类*/ public class SimpleFactoryPattern {public static Phone create(String name) {//根据输入对象名称判断返回相匹配的对象if("IPhone".equals(name)) {//返回对象return new IPhone();}else…

Java算法--队列

队列 队列介绍 队列是一个有序列表&#xff0c;可以用数组或是链表来实现。遵循先入先出的原则。即&#xff1a;先存入队列的数据&#xff0c;要先取出。后存入的要后取出 数组模拟队列思路 队列本身是有序列表&#xff0c;若使用数组的结构来存储队列的数据&#xff0c;则…

自动驾驶新书“五一”节马上上市了

我和杨子江教授合写的《自动驾驶系统开发》终于在清华大学出版社三校稿之后即将在五一节后出版。 清华大学汽车学院的李克强教授和工程院院士撰写了序言。 该书得到了唯一华人图灵奖获得者姚期智院士、西安交大管晓宏教授和科学院院士以及杨强教授和院士等的推荐&#xff0c;…

git变更远端仓库名之后如何修改本地仓库配置的另一种方法?(删remote指针、添加、绑定master)

背景 如果某个远端的仓库地址变化后&#xff0c;本地仓库可以修改对应的remote。 之前谈过几种方法&#xff0c;比如重新设置一个新的remote的指针&#xff0c;绑定到新地址。然后删除origin&#xff0c;然后把新指针mv到origin。比如直接seturl修改&#xff08;git remote se…

基于HTML+CSS+JavaScript的表白网页

基于HTMLCSSJavaScript的表白网页 前言效果截图&#xff08;为GIF格式&#xff09;部分代码领取源码下期更新预报 前言 大部分人都有喜欢的人&#xff0c;学会这个表白代码&#xff0c;下次表白你肯定会成功。 效果截图&#xff08;为GIF格式&#xff09; 部分代码 index.htm…

使用 Python 和 DirectShow 从相机捕获图像

在 Python 中使用 OpenCV 是视觉应用程序原型的一个非常好的解决方案,它允许您快速起草和测试算法。处理从文件中读取的图像非常容易,如果要处理从相机捕获的图像,则不那么容易。OpenCV 提供了一些基本方法来访问链接到 PC 的相机(通过对象),但大多数时候,即使对于简单的…

在no branch上commit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录&#xff0c;这里的第二条提交&#xff08;fbd3ea8&#xff09;就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8&#xff0c;恢复到上次提交的状态&#xff0c;并且为其创建个分支backup&#xff0c;此时…

B+tree - B+树深度解析+C语言实现+opencv绘图助解

Btree - B树深度解析C语言实现opencv绘图助解 1. 概述2. Btree介绍3. Btree算法实现3.1 插入分裂 3.2 删除向右借位&#xff08;左旋&#xff09;向左借位&#xff08;右旋&#xff09;合并 3.3 查询和遍历3.3.1 查询3.3.2 遍历 3.4 优化优化1(匀key)优化2(升级key)优化3(拓展兄…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期&#xff0c;云和恩墨 zData X 多元数据库一体机&#xff08;以下简称 zData X&#xff09;在某证券公司的OA、短信和CRM业务系统中成功上线&#xff0c;标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

SEO之链接原理(三)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议 &#xff08;接上一篇&#xff09; 4、 Google PR PR是 PageRank 的缩写。Google PR理论是所有基于链接的搜索引擎理论中最有名的。 PR是Google创始人之一拉里佩奇发明…

二维数组打印菱形(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;char arr[5][5] { { , , *, , }, { , *, *, *, },{*, *, *, *, *}, { , *, *, *, …

【基于BP神经网络的多输入分类预测】

文章目录 前言环境准备导入数据划分训练集和测试集数据归一化建立模型设置训练参数训练网络仿真测试数据反归一化和排序性能评价结果可视化混淆矩阵 前言 在数据科学和机器学习领域&#xff0c;对复杂数据集进行高精度的分类预测是一个常见且关键的任务。本文通过MATLAB代码示例…

python3GUI--本地简易音乐播放器By:PyQt5(附下载地址)

文章目录 二&#xff0e;展示1.启动2.添加音乐&播放3.软件风格 三&#xff0e;软件整体功能-览四&#xff0e;实现原理1.界面设计2.音频播放3.打包 五&#xff0e;总结 博客二连发&#xff0c;继续为大家带来我使用PyQt5开发的软件&#xff0c;本次为大家分享我写的一款本地…

MySQL数据库常见SQL语句宝典

一 、常用操作数据库的命令 1.查看所有的数据库 : show databases;2.创建一个数据库 : create database if not exists 数据库名;3.删除一个数据库 : drop database if exists 数据库名;4.选择一张表 (注意在建表之前必须要选择数据库) : use 表名;* --tab 键的上面&#x…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…

ULTIMATE VOCAL REMOVER V5 for Mac:专业人声消除软件

ULTIMATE VOCAL REMOVER V5 for Mac是一款专为Mac用户设计的人声消除软件&#xff0c;它凭借强大的功能和卓越的性能&#xff0c;在音乐制作和后期处理领域崭露头角。 ULTIMATE VOCAL REMOVER V5 for Mac v5.6激活版下载 这款软件基于深度神经网络&#xff0c;通过先进的训练模…
最新文章