leetcode刷题(不邻接植花、电话号码的字母组合、统计共同度过的日子数、节点与其祖先之间的最大差值、分隔数组以得到最大和、二进制求和、x的平方根、最小偶倍数)

2023-11-16

目录

1、不邻接植花

2、电话号码的字母组合

3、统计共同度过的日子数

4、节点与其祖先之间的最大差值

5、分隔数组以得到最大和

6、 二进制求和

7、 x的平方根

8、最小偶倍数


1、不邻接植花

2、电话号码的字母组合

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:    #啥都不输入
            return []
        phone = ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]  #模拟键
        queue = ['']    #初始化队列
        for digit in digits:    #遍历数字
            for i in range(len(queue)):
                tmp = queue.pop(0)   #把队列里面的第一个字母搞出来
                for letter in phone[ord(digit) - 50]:    #ord()函数是返回字符ASCLL码的,2的ASCLL码是50
                    queue.append(tmp + letter)    #相加组合
        return queue

3、统计共同度过的日子数

dayPerMounth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
class Solution:
    def stringToInt(self, s: str) -> int:    #转换天数很关键
        m, d = map(int, s.split('-'))
        ans = 0
        for i in range(1, m):
            ans += dayPerMounth[i - 1]
        ans += d
        return ans   #把输入的日期的天数算出来

    def countDaysTogether(self, arriveAlice: str, leaveAlice: str, arriveBob: str, leaveBob: str) -> int:
        aa = self.stringToInt(arriveAlice)
        la = self.stringToInt(leaveAlice)
        ab = self.stringToInt(arriveBob)
        lb = self.stringToInt(leaveBob)
        if aa > ab:          #将两者统一一下,统一成aa<=ab,方便计算
            aa, ab = ab, aa
            la, lb = lb, la
        if ab > la:   #b还没到,a就走了
            return 0
        return min(la, lb) - ab + 1

4、节点与其祖先之间的最大差值

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
#对于每一个节点,求其与祖先节点的最大差值,我们只需要求出该节点与祖先节点最大值和最小值的差值,取所有差值的最大值即可
class Solution:
    def maxAncestorDiff(self, root: Optional[TreeNode]) -> int:
        def dfs(root, mi, mx):
            if root is None:
                return   #没有这个节点就拉倒
            nonlocal ans
            ans = max(ans, abs(mi - root.val), abs(mx - root.val))
            mi = min(mi, root.val)
            mx = max(mx, root.val)
            dfs(root.left, mi, mx)
            dfs(root.right, mi, mx)
        ans = 0
        dfs(root, root.val, root.val)
        return ans

5、分隔数组以得到最大和

#copy来的
class Solution:
    def maxSumAfterPartitioning(self, arr: List[int], k: int) -> int:
        n = len(arr)
        d = [0] * (n + 1)
        for i in range(1, n + 1):
            maxValue = arr[i - 1]
            for j in range(i - 1, max(-1, i - k - 1), -1):
                d[i] = max(d[i], d[j] + maxValue * (i - j))
                if j > 0:
                    maxValue = max(maxValue, arr[j - 1])
        return d[n]

6、 二进制求和

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        return bin(int(a,2)+int(b,2))[2:]       
#先使用二进制int(a,2)转换成十进制,再利用bin()转换成二进制,注意最后[2:]的目的是使用bin()的得到的最后前缀会加上0b,这样方便去除

7、 x的平方根

class Solution(object):
    def mySqrt(self, x):
        if x == 0 or x == 1:
            return x

        low, high, res = 1, x, -1

        while low <= high:
            mid = (low + high) // 2   #二分查找
            if mid * mid <= x:
                res = mid
                low = mid + 1
            else:
                high = mid - 1

        return res

8、最小偶倍数

class Solution:
    def smallestEvenMultiple(self, n: int) -> int:
        if n % 2 == 0:
            return n
        else:
            return 2 * n

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode刷题(不邻接植花、电话号码的字母组合、统计共同度过的日子数、节点与其祖先之间的最大差值、分隔数组以得到最大和、二进制求和、x的平方根、最小偶倍数) 的相关文章

随机推荐

  • 一个可以让你斩获大厂Offer的笔记、速来领取

    青春啊 永远是美好的 可是真正的青春 只属于这些永远力争上游的人 永远忘我劳动的人 永远谦虚的人 最近收到不少的优秀学生投稿 他们有投稿手写笔记 有手写博客 也还有视频 小编也从中挑出几篇较为优秀的文章 下面一起看看吧 C认证优秀学员笔记又
  • HashMap多线程造成了CPU100%,死循环

    resize 方法的时候是罪魁祸首
  • STM32F1xx IAP跳转App 后中断异常及解决

    网上看到一些网友遇到STM3F1xx系列编写IAP程序经常遇到跳转到App后中断异常的问题 如一触发串口接收中断就复位等 现梳理如下 其实引起上述异常的根本原因就是 共用一组件 中断无入口 如 IAP程序中配置并打开了USART1接收中断
  • 使用Vue实现div上下收缩动画效果

    封装组件
  • springboot原理

    1 什么是SpringBoot SpringBoot是一个快速开发框架 快速的将一些常用的第三方依赖整合 原理 通过Maven子父工程的方式 简化XML配置 全部采用注解形式 内置Http服务器 Jetty和Tomcat 最终以java应用
  • ConstrainLayout解决复杂的嵌套布局

    最近 项目比较忙 没什么时间写博客 今天我要讲的是 项目中复杂的嵌套布局你讲采取何种方式呢 如果按常规方式去做 估计你做完一个界面 估计够呛 我将推荐你们使用谷歌推出的ConstrainLayout 虽然还没有出正式版本 但用于复杂嵌套布局
  • OJ系统刷题 第九篇(难篇)

    13441 求小数的某一位 难题 二刷 三刷 时间限制 1 秒 内存限制 128 MB 分数 tfrac a b ba 化为小数后 小数点后第n位的数字是多少 输入 三个正整数a b n 相邻两个数之间用单个空格隔开 0
  • Windows下好用的终端程序ConEmu

    Windows下的终端程序一直是一个问题 默认的cmd已经老旧不堪 而且在Windows 10中已经取消了在此处打开终端的右键菜单 改为使用功能更加强大的Powershell 而Powershell虽然功能强大 但是默认自带的终端程序却很不
  • COCO数据集解析生成语义分割mask

    COCO数据集解析生成语义分割mask 通过coco数据集的标注文件 instances train2014 json instances val2014 json 生成语义分割mask存在不同类别区域重叠问题 导致重叠部分像素的数值超出
  • linux的PAM认证和shadow文件中密码的加密方式

    它是一种统一的认证方案 PAM 让您能随时改变您的认证方法以及需求 并且不需要重新编译任何代码就封装了所有本地认证方法 具体见 PAM 网站 对于 PAM 您只需要做 对您的密码采用不同于 DES 的加密方式 让它们面对暴力解码 brute
  • “自顶向下,逐步求精“的方法简介

    自顶向下 逐步求精 的方法思路代表了生活中大多数事情的处理方法 它的奥妙之处在于将繁杂棘手的事务进行分解 逐部列条 化为最简易单调的子任务然后进行求解 如图即是一个很典型的逐步分解的问题模型 对于一件既定的事务 先进行总体性的了解即定出整个
  • halcon 中 select_shape 算子 相关特征参数

    求Region指定特征值 region features Regions Features Value 根据特征值选择区域 select shape Regions SelectedRegions Features Operation Mi
  • 安卓初学——界面按钮响应

    安卓学习 采用onClickListener监听器 界面按钮响应 一 定义监听 绑定组件 二 通过匿名内部类 把组件和事件绑定 三 采用view 对象调用onClick 四 在当前Activity实现监听接口 一 定义监听 绑定组件 自定义
  • VMware安装后打开就蓝屏

    VMware虚拟机开机蓝屏 追风 80 人赞同了该文章 目录 收起 一 查看主板上的虚拟化技术支持是否开启 二 开启虚拟机平台 如果在新建的虚拟机安装好后一点开机出现蓝屏 反复重装并且确定了新建虚拟机没有出错的情况下考虑是否是虚拟化没有开启
  • MobaXterm的下载安装

    下载地址 MobaXterm Xserver with SSH telnet RDP VNC and X11 Home Edition 进入页面后 点击绿色的方框下载 下载后得到一个压缩包 解压后可以看到有两个文件 点击 msi进行安装 选
  • Json Object转Model, Model、DataTable转Json Object (Jayrock技巧)

    本文假定读者有一定的Ext 控件的使用经验 看过Ext EditGridPanel实现效果的朋友会很惊讶 一个Grid就能实现所有增删改查功能 在展示给客户看时 让你的表现得很风骚 而他们又怎么知道 我们在调试js时 是多么痛苦 如何在js
  • PyTorch基础练习-task5(PyTorch实现L1,L2正则化以及Dropout)

    PyTorch基础练习 task5 一 Dropout原理 二 用代码实现正则化 L1和L2 2 1 L1实现 2 2 L2实现 三 PyTorch中实现dropout 一 Dropout原理 在前向传播的时候 让某个神经元的激活值以一定的
  • android edittext 输入完成监听,EditText输入监听

    EditText输入监听 原创 6710766562015 05 13 13 34 38著作权 文章分类 android开发 阅读数 548 著作权归作者所有 来自51CTO博客作者671076656的原创作品 如需转载 请注明出处 否则将
  • 关于idea 生成war 包放入tomcat的路径访问问题

    目录 1 打包成war 2 关于war 和war exploded 3 在idea中使用tomcat启动 4 把war包放在指定的tomcat下启动 1 打包成war 点击右上角project structure或者左上角File proj
  • leetcode刷题(不邻接植花、电话号码的字母组合、统计共同度过的日子数、节点与其祖先之间的最大差值、分隔数组以得到最大和、二进制求和、x的平方根、最小偶倍数)

    目录 1 不邻接植花 2 电话号码的字母组合 3 统计共同度过的日子数 4 节点与其祖先之间的最大差值 5 分隔数组以得到最大和 6 二进制求和 7 x的平方根 8 最小偶倍数 1 不邻接植花 2 电话号码的字母组合 class Solut