Python每日一练(20230421)

news2024/12/26 12:14:20

目录

1. 组合总和 II  🌟🌟

2. 加一  🌟

3. 从中序与后序遍历序列构造二叉树  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 组合总和 II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次。

说明:

  • 所有数字(包括目标数)都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:[[1,2,2],[5]]

出处:

https://edu.csdn.net/practice/26142804

代码:

class Solution(object):
    def combinationSum2(self, candidates, target):
        """
        :type candidates: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        candidates.sort()
        dp = [[] for _ in range(target + 1)]
        dp[0].append([])
        for i in range(1, target + 1):
            for j in range(len(candidates)):
                if candidates[j] > i:
                    break
                for k in range(len(dp[i - candidates[j]])):
                    temp = dp[i - candidates[j]][k][:]
                    if len(temp) > 0 and temp[-1] >= j:
                        continue
                    temp.append(j)
                    dp[i].append(temp)
        res = []
        check = {}
        for temp in dp[target]:
            value = [candidates[t] for t in temp]
            try:
                check[str(value)] += 1
            except KeyError:
                check[str(value)] = 1
                res.append(value)
        return res
# %%
s = Solution()
print(s.combinationSum2(candidates = [10,1,2,7,6,1,5], target = 8))
print(s.combinationSum2(candidates = [2,5,2,1,2], target = 5))

输出:

[[1, 2, 5], [1, 1, 6], [2, 6], [1, 7]]
[[1, 2, 2], [5]]


2. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:

输入:digits = [0]
输出:[1]

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

出处:

https://edu.csdn.net/practice/26142805

代码:

class Solution(object):
    def plusOne(self, digits):
        ls = len(digits)
        for index in reversed(range(ls)):
            if digits[index] < 9:
                digits[index] += 1
                return digits
            else:
                digits[index] = 0
        digits.insert(0, 1)
        return digits
# %%
s = Solution()
print(s.plusOne(digits = [1,2,3]))
print(s.plusOne(digits = [4,3,2,1]))
print(s.plusOne(digits = [0]))
print(s.plusOne(digits = [9,9,9]))

输出:

[1, 2, 4]
[4, 3, 2, 2]
[1]
[1, 0, 0, 0]


3. 从中序与后序遍历序列构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。

注意:
你可以假设树中没有重复的元素。

例如,给出

中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]

返回如下的二叉树:

     3
    / \
   9  20
     /  \
    15   7

出处:

https://edu.csdn.net/practice/26142806

代码:

from typing import List

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
    def levelOrder(self):
        if not self: return []
        res, que = [], [self]
        while que:
            cur = que.pop(0)
            if cur:
                res.append(cur.val) 
                que.append(cur.left)
                que.append(cur.right)
            else:
                res.append(None)
        while res[-1] is None:
            res.pop()
        return res

class Solution:
    def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:
        def build_tree(in_left, in_right, post_left, post_right):
            if in_left > in_right:
                return
            post_root = post_right
            root = TreeNode(postorder[post_root])
            in_root = inorder_map[root.val]
            size_of_left = in_root - in_left
            root.left = build_tree(
                in_left, in_root - 1, post_left, post_left + size_of_left - 1
            )
            root.right = build_tree(
                in_root + 1, in_right, post_left + size_of_left, post_root - 1
            )
            return root
        size = len(inorder)
        inorder_map = {}
        for i in range(size):
            inorder_map[inorder[i]] = i
        return build_tree(0, size - 1, 0, size - 1)

#%%
inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]

s = Solution()
print(s.buildTree(inorder, postorder).levelOrder())

输出:

[3, 9, 20, None, None, 15, 7]


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过开源项目搭建私有云平台--第四步中:安装rancher longhorn

第四步中&#xff1a;安装rancher longhorn&#xff0c;实现容器文件挂载 之前在国企&#xff0c;曾经专门针对容器挂载立专项来调研&#xff0c;当时选择主流的ceph&#xff0c;最终结果是成功搭建了用于k8s集群的共享存储&#xff0c;但要独立找服务器来部署&#xff0c;增加…

Cloud computing(后续慢慢补充)

Cloud computing 可以看到右侧的容器虚拟化架构中&#xff0c;不需要运行额外的OS&#xff0c;这样启动的服务性能会相比于通过虚拟化软件实现的架构更优秀。但是虚拟机同样也有它的优点&#xff0c;比如它的安全、隔离性&#xff0c;可以运行不同的操作系统等等。 Virtualiz…

【linux】linux入门级别指令

一些基础指令 前言用户登录新建用户 ls指令pwd命令cd 指令which指令alias指令touch指令mkdir指令rmdir指令 && rm 指令rmdirrmman指令cp指令mv指令catmoreless指令head 指令tail指令输出重定向时间相关的指令cal指令find指令grep指令zip/unzip指令tar指令bc指令uname指…

Bootstrap01【前端开发框架】家居商城首页之导航轮播图

目录 一.WWW 1.What&#xff1f; 2.Why&#xff1f; 3.Where&#xff1f; 二.环境安装 三.案例 案例1&#xff1a;查询按钮原生态实现对比Bootstrap方式实现 案例3&#xff1a;首页导航原生态实现&#xff08;divcss&#xff09; 案例4&#xff1a;首页导航Bootstrap实…

2021遥感应用组二等奖:基于多源遥感数据的武夷山毛竹林提取研究及扩张特征分析

作品介绍 一、应用背景 近年研究表明&#xff0c;竹林固碳能力高&#xff0c;在维护全球碳平衡和应对气候变化等方面具有重要的作用。中国是竹资源最丰富的国家之一&#xff0c;在世界竹子研究领域处于领先地位。毛竹是中国本土竹类中分布最广、面积最大、经济价值最高的优良竹…

原来这就是所谓的 JSR!

相信大家在学习 Java 的过程中&#xff0c;或多或少都见过 JSR 这个词。本篇文章就科普下什么是 JSR。 什么是 JSR &#xff1f; JSR&#xff08;Java Specification Requests&#xff09;&#xff0c;是指 Java 规范请求&#xff08;或者活规范提案&#xff09;。这个请求&a…

1. VBA概述

VBA代表Visual Basic for Applications&#xff0c;这是一种来自Microsoft的事件驱动编程语言&#xff0c;现在主要与Microsoft Office应用程序(如MSExcel&#xff0c;MS-Word和MS-Access)一起使用。 它帮助技术人员构建定制的应用程序和解决方案&#xff0c;以增强这些应用程…

小程序 vs HTML 5 动态更新模式有何区别?

最近在看一些移动开发的文章&#xff0c;很多都在反复讲动态更新这个概念&#xff0c;其实换种讲法就是热更新&#xff0c;既然很多地方都在讲&#xff0c;作为一名“躺平”的开发者&#xff0c;必须再深入了解下具体的原理和模式。 动态机制及技术原理 动态研发模式就是一种…

Web 开发会话技术之 -Cookie介绍以及源码分析和图分析以及Cookie的生命周期--路径--中文乱码的分析和代码示例

目录 Web 开发会话技术之 -Cookie 会话 基本介绍 1. 什么是会话&#xff1f; 2. 会话过程中要解决的一些问题&#xff1f; cookie 技术 cookie 介绍 二说 cookie cookie 可以用来做啥 cookie 基本使用 cookie 常用方法 cookie 底层实现机制-创建和读取 Cookie Crea…

javaweb838仓库进销存管理系统

此系统主要分4个模块&#xff0c;分别是&#xff1a; 出库管理模块&#xff1a;对每种出库出去的商品都有相应的记录显示。 入库管理模块&#xff1a;对每种入库来的商品都有相应的记录显示&#xff0c;如果商品管理局显示某一厂家的某一种商品不符合要求&#xff0c;则在入库的…

变压器基本知识

1、高频变压器是工作频率超过中频&#xff08;10kHz&#xff09;的电源变压器&#xff0c;主要用于高频开关电源中&#xff0c;常用的工作频率是50K&#xff0c;65K。 变压器是变换交流电压、电流和阻抗的器件&#xff0c;当初级线圈中通有交流电流时&#xff0c;铁芯&#xff…

Crash工具介绍和常见命令使用

1. 介绍 本文主要介绍crash工具的使用以及常用的命令。crash工具&#xff0c;常用来分析内核的coredump以及应用的coredump&#xff0c;功能非常强大。 crash工具官方介绍 使用crash分析内核crash情况&#xff0c;需要准备以下内容&#xff1a; 内核crash时生成的coredump文…

ArcGIS发展历史及体系架构

ArcGIS是美国能源环境研究所ESRI&#xff08;Environmental Systems Research Institute&#xff09;开发的GIS软件。 1 ArcGIS软件发展历史 &#xff08;1&#xff09;ARC/INFO Workstation 1981年&#xff0c;ARC/INFO第一代商业产品发布; 1986年&#xff0c;PC版ARC/INFO问世…

2022(一等奖)D277:1998-2019年中国植被动态变化及其影响因素分析

作品介绍 1 应用背景 近半个世纪以来&#xff0c;随着全球气候变化和人类活动的双重干扰&#xff0c;自然生态系统遭到了不同程度的影响。植被作为陆地生态系统的重要组成部分&#xff0c;在陆地生态系统的物质循环和能量流动中发挥着不可替代的作用&#xff0c;是自然生态系统…

论文笔记:GhostNet: More Features from Cheap Operations

1 论文简介 论文&#xff1a;GhostNet: More Features from Cheap Operations&#xff08;华为诺亚团队&#xff09; 源代码&#xff1a;https://github.com/huawei-noah/ghostnet 2 动机 由于内存和计算资源的限制&#xff0c;在嵌入式设备上部署卷积神经网络非常困难。 本…

浅述 国产 仪器 4456系列数字荧光示波器

4456系列数字荧光示波器具有6个产品型号&#xff0c;带宽350MHz~1GHz&#xff0c;最高采样率5GSa/s&#xff0c;最大存储深度500Mpts/CH&#xff0c;最快波形捕获率100万个波形/秒&#xff0c;独创的Any Acquire Phosphor技术&#xff0c;为您提供全新的示波器使用体验。 4456…

Doris(12):高级设置

1 增大内存 内存不够时, 查询可能会出现‘Memory limit exceeded’, 这是因为doris对每个用户默认设置内存限制为 2g SHOW VARIABLES LIKE "%mem_limit%"; exec_mem_limit 的单位是 byte&#xff0c;可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。 SET…

《Spring MVC》 第四章 域对象、视图、转发和重定向

前言 介绍Spring MVC的域对象、视图、转发和重定向 1、域对象共享数据 Spring MVC 提供了多种域对象共享数据的方式&#xff0c;其中最常用的方式如下&#xff1a; 1.1、使用 Servlet API 向 request 域对象中共享数据 服务端代码&#xff1a; RequestMapping("toLo…

RTC音视频是什么意思?即构RTC音视频有什么优势

RTC音视频是什么意思? RTC(Real time communication)&#xff0c;是实时音视频的一个简称&#xff0c;一种给行业提供高并发、低延时、高清流畅、安全可靠的全场景、全互动、全实时的音视频服务的终端服务。但更广义的RTC技术&#xff0c;不单单局限于音视频&#xff0c;包括I…

C++ 算法进阶系列之剖析树型动态规划算法思想

1. 前言 什么是树型动态规划&#xff1f; 概念中有 2 个子概念&#xff1a; 一个是动态规划概念。动态规划可以简单理解为通过对已经计算出来的子问题的状态值进行修改(基于子问题的状态值找到当前子问题的最优值)而得到当前子问题的状态值。 Tips&#xff1a; 本文侧重于动…