码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • lc marathon 2022.6.22


    文章目录

        • [剑指 Offer 55 - I. 二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/)
        • [剑指 Offer 56 - I. 数组中数字出现的次数](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/)
        • [剑指 Offer 56 - II. 数组中数字出现的次数 II](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/)
        • python不同进制转换tips
        • [剑指 Offer 57. 和为s的两个数字](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/)

    剑指 Offer 55 - I. 二叉树的深度

    在这里插入图片描述

    计算树的深度

    对于每个节点;

    max(左子树高度,右子树高度)+ 1
    
    • 1
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def maxDepth(self, root: TreeNode) -> int:
            """
            用遍历即可
            """
            return dfs(root)
    def dfs(root):
        if root==None:
            return 0
        l1=dfs(root.left)
        l2=dfs(root.right)
        return 1+max(l1,l2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    剑指 Offer 56 - I. 数组中数字出现的次数

    在这里插入图片描述

    这道题是一个升级版,简单版本只有一个数出现了一次,其他数都出现了两次。

    运用位运算即可,相同的数异或会为0,不同的数异或不为0,0和某数异或该数不变且满足交换律

    因此把数组中所有数全部异或,即得到该数

    对于该题

    相同的数异或为0,不同的异或为1。0和任何数异或等于这个数本身。

    所以,数组里面所有数异或 = 目标两个数异或 。 由于这两个数不同,所以异或结果必然不为0。

    假设数组异或的二进制结果为10010,那么说明这两个数从右向左数第2位是不同的

    那么可以根据数组里面所有数的第二位为0或者1将数组划分为2个。

    这样做可以将目标数必然分散在不同的数组中,而且相同的数必然落在同一个数组中。

    这两个数组里面的数各自进行异或,得到的结果就是答案

    class Solution:
        def singleNumbers(self, nums: List[int]) -> List[int]:
            l=0
            for num in nums:
                l=l^num
            s=bin(l)
            j=0
            s=s.split('0b')[1]
            for i in range(-1,-len(s)-1,-1):
                if s[i]=='1':
                    j=i
                    break
            l1=0
            l2=0
            for num in nums:
                num_str=bin(num).split('0b')[1]
                if abs(j)>len(num_str) or num_str[j]=='0':
                    l1=l1^num
                else:
                    l2=l2^num
    
            return [l1,l2]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    剑指 Offer 56 - II. 数组中数字出现的次数 II

    这题没要求,直接用字典
    在这里插入图片描述

    from collections import Counter
    class Solution:
        def singleNumber(self, nums: List[int]) -> int:
            dic=Counter(nums)
            for num in dic.keys():
                if dic[num]==1:
                    return num
            return -1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    python不同进制转换tips

    # 十进制转二进制
    bin(3)  -->  0b11  str
    # 二级制转10进制
    int("11" or "0b11" or 11,2)  --> 3 int 
    同理 八进制 十六进制
    
    • 1
    • 2
    • 3
    • 4
    • 5

    剑指 Offer 57. 和为s的两个数字

    class Solution:
        def twoSum(self, nums: List[int], target: int) -> List[int]:
            s=set()
            for num in nums:
                if target-num in s:
                    return [num,target-num]
                s.add(num)
            return -1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

  • 相关阅读:
    java使用数据库连接池
    FreeRTOS 基于 ARMv8-M 对 MPU 的应用
    uni-app 的条件编译(APP-PLUS 、H5、MP-WEIXIN )
    Day 84
    【Python】sys.argv[ ]简单易懂
    GBASE 8s 通过light scan优化查询性能
    【Android知识笔记】热修复专题
    redis缓存穿透问题
    教程,如何给公众号文章或菜单添加附件?
    open62541直接导入NodeSet文件
  • 原文地址:https://blog.csdn.net/hch977/article/details/125426951
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号