LeetCode 每日一题 2022/12/19-2022/12/25

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

目录

*

+ 12/19 1971. 寻找图中是否存在路径
+ 12/20 1760. 袋子里最少数目的球
+ 12/21 1753. 移除石子的最大得分
+ 12/22 1799. N 次操作后的最大分数和
+ 12/23 2011. 执行操作后的变量值
+ 12/24 1754. 构造字典序最大的合并字符串
+ 12/25 1739. 放置盒子

12/19 1971. 寻找图中是否存在路径

way[i]记录节点i可以走到的所有节点数
广搜查找是否能够从source到destination

def validPath(n, edges, source, destination):
"""
    :type n: int
    :type edges: List[List[int]]
    :type source: int
    :type destination: int
    :rtype: bool
"""
    if source==destination:
        return True
    from collections import defaultdict
    way = defaultdict(list)
    for x,y in edges:
        way[x].append(y)
        way[y].append(x)

    l = [source]
    mem = set()
    while l:
        tmp = []
        for node in l:
            if node in mem:
                continue
            mem.add(node)
            for nt in way[node]:
                if nt == destination:
                    return True
                if nt not in mem:
                    tmp.append(nt)
        l = tmp
    return False

12/20 1760. 袋子里最少数目的球

二分判断 每个袋子里最多为x时需要的操作次数
如果num

def minimumSize(nums, maxOperations):
"""
    :type nums: List[int]
    :type maxOperations: int
    :rtype: int
"""
    l,r = 1,max(nums)
    ans = 0
    while lr:
        x = (l+r)//2
        ops = sum((num-1)//x for num in nums)
        if opsmaxOperations:
            ans = x
            r = x-1
        else:
            l = x+1
    return ans

12/21 1753. 移除石子的最大得分

假设a

def maximumScore(a, b, c):
"""
    :type a: int
    :type b: int
    :type c: int
    :rtype: int
"""
    l = [a,b,c]
    l.sort()
    a,b,c = l[0],l[1],l[2]
    if a+bc:
        return a+b
    return c+a-(c-(b-a)+1)//2

12/22 1799. N 次操作后的最大分数和

gcd辗转相除获得最大公约数
g[i][j]用来存储nums[i],nums[j]的最大公约数
一共有n个数 用一个长度为n的二进制表示 数组状态
将使用的位置设置为1 一共有2^n-1种状态
一个合理的状态必定是拥有偶数个1
从小到大遍历所有状态

def maxScore(nums):
"""
    :type nums: List[int]
    :rtype: int
"""
    def gcd(a,b):
        if b==0:
            return a
        return gcd(b,a%b)
    def getone(a):
        ans = 0
        while a:
            ans += a&1
            a>>=1
        return ans
    n = len(nums)
    g = [[0]*n for _ in range(n)]
    for i in range(n):
        for j in range(i+1,n):
            g[i][j] = gcd(nums[i],nums[j])
    f = [0]*(1<<n)
    for k in range(1<<n):
        cnt = getone(k)
        if cnt%2==0:
            for i in range(n):
                if k>>i &1:
                    for j in range(i+1,n):
                        if k>>j & 1:
                            f[k] = max(f[k],f[k^(1<<i)^(1<<j)]+g[i][j]*(cnt//2))
    return f[-1]

12/23 2011. 执行操作后的变量值

遍历 检查第2位可以判断是加还是减

def finalValueAfterOperations(operations):
"""
    :type operations: List[str]
    :rtype: int
"""
    ans = 0
    for op in operations:
        if op[1]=="+":
            ans+=1
        else:
            ans-=1
    return ans

12/24 1754. 构造字典序最大的合并字符串

对于word1[i] word1[j]
如果word1[i:]>word1[j:] 则将word1[i]先放入

def largestMerge(word1, word2):
"""
    :type word1: str
    :type word2: str
    :rtype: str
"""
    l=[]
    n,m=len(word1),len(word2)
    i,j=0,0
    while i<n or j<m:
        if i<n and word1[i:]>word2[j:]:
            l.append(word1[i])
            i+=1
        else:
            l.append(word2[j])
            j+=1
    return ''.join(l)

12/25 1739. 放置盒子

对第i层 可以增加i个
盒子上限为1+(1+2)+(1+2+3)+…+i(i+2)/2 = i(i+1)(i+2)/6
基础之上在增加j个

def minimumBoxes(n):
"""
    :type n: int
    :rtype: int
"""
    cur = i = j = 1
    while n>cur:
        n -= cur
        i += 1
        cur += i
    cur = 1
    while n>cur:
        n -= cur
        j += 1
        cur += 1
    return (i-1)*i//2 + j

Original: https://blog.csdn.net/zkt286468541/article/details/128425924
Author: alphaTao
Title: LeetCode 每日一题 2022/12/19-2022/12/25

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/786971/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【SVD(奇异值分解)】详解及python-Numpy实现

    目录 一、特征值分解(EVD) 二、奇异值分解(SVD) 奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不…

    Python 2023年8月1日
    048
  • Allure定制报告

    1、定制报告常用的装饰器 2、allure.dynamic在测试方法中动态添加定制 3、用例等级的定制 4、用例描述的定制 5、链接的定制 6、步骤的定制 7、附件的定制 1、定制…

    Python 2023年5月23日
    049
  • Kmeans聚类算法详解

    摘要:本文详细介绍 _Kmeans_聚类算法的原理和程序实现。首先介绍利用该算法的原理及理解,详细介绍基于 _MATLAB_设计一个自定义的 _Kmeans_函数过程,然后利用该函…

    Python 2023年10月31日
    063
  • Python:jieba库的介绍与使用

    前言: jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分词,我们可以通过jieba库来完成这个…

    Python 2023年8月1日
    063
  • Python工具箱系列(十八)

    非对称加解密应用广泛,它的存在是致力于解决密钥通过公共信道传输这一经典难题。对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥,而这个密钥在传递过程中有可能会被截获,从…

    Python 2023年10月30日
    040
  • 【安全】(一)Django之XSS防御

    1、XSS攻击 Cross-Site Scripting 的缩写。黑客通过提交脚本代码到服务器,恶意篡改正常用户的页面,从而获取正常用户的cookie等信息。 过滤输入和转义输出。…

    Python 2023年8月4日
    039
  • python实验二数据预处理_数据清洗与预处理-Python实现

    这个Python版本必须是3.7的 首先讲一下数据清洗与预处理的定义 在百度百科中的定义是 – 数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据…

    Python 2023年8月8日
    059
  • windows 安装pyganme_小白安装pygame实录(win系统)

    学习python有一段时间了,终于进展到做具体项目的阶段。游戏项目是python视觉化最好的训练项目,所以安装pygame是学习中必经的一项。 对于科班同学来说这些都不是问题,但是…

    Python 2023年9月24日
    060
  • python spyder结束运行_结束运行python的方法

    有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序。sys.exit()会引发一个异常 1.如果这个异常没有被捕获,那么python编译器将会退出,后面…

    Python 2023年8月7日
    071
  • Scrapy-redis爬取51Job数据

    Scrapy-redis爬取51Job数据 一、工具 python3 scrapy-redis redis 二、准备工作 (一)安装各个模块 项目中使用到工具主要是Python3和…

    Python 2023年10月2日
    048
  • vue2双向绑定原理:深入响应式原理defineProperty、watcher、get、set

    响应式是什么?Vue 最独特的特性之一~ 就是我们在页面开发时,修改data值的时候,数据、视图页面需要变化的地方变化。 主要使用到哪些方法? 用 Object.definePro…

    Python 2023年10月19日
    048
  • pandas数值运算方法

    1、通用函数:保留索引: 对Series或DataFrame对象使用numpy的通用函数时,返回的是保留索引的pandas对象 2、通用函数:索引对齐: 当两个Series或Dat…

    Python 2023年8月8日
    064
  • python flask后台框架_利用python实现后端写网页(flask框架)

    如何用python做后端写网页-flask框架 什么是Flask安装flask模块Hello World更深一步:数据绑定后端传入数据从前端获取数据 数据库连接screen创建后台…

    Python 2023年8月13日
    063
  • drf 频率类

    频率类源码 入口: 入口: 1)APIView的dispath方法的 self.initial(request,*args,**keargs)点进去 2) self。check_t…

    Python 2023年6月12日
    053
  • 下载安装NodeJs v16

    @ 下载安装Node.js v16 修改全局模块安装路径 nodeJs修改镜像源 下载安装Node.js v16 下载地址:Node.js (nodejs.org) 除了修改安装位…

    Python 2023年6月3日
    068
  • Libgdx游戏开发(1)——环境配置及demo运行

    原文: Libgdx游戏学习(1)——环境配置及demo运行 – Stars-One的杂货小窝 Libgdx游戏是基于Java的一款游戏引擎,可以发布Android,桌…

    Python 2023年10月20日
    060
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球