Python每日一练(20230422)

news2024/9/23 17:16:11

目录

1. 杨辉三角  🌟

2. 最长回文子串  🌟🌟

3. 逆波兰表达式求值  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 杨辉三角

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

提示:

  • 1 <= numRows <= 30

出处:

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

代码:

from typing import List
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        if numRows == 1:
            return [[1]]
        if numRows == 2:
            return [[1], [1, 1]]
        result = [[1], [1, 1]] + [[] for i in range(numRows - 2)]
        for i in range(2, numRows):
            for j in range(i + 1):
                if j == 0 or j == i:
                    result[i].append(1)
                else:
                    result[i].append(result[i - 1][j - 1] + result[i - 1][j])
        return result

if __name__ == "__main__":
    s = Solution()
    for i in range(1,6):
        print(s.generate(i))

输出:

[[1]]
[[1], [1, 1]]
[[1], [1, 1], [1, 2, 1]]
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]


2. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

示例 3:

输入:s = "a"
输出:"a"

示例 4:

输入:s = "ac"
输出:"a"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母(大写和/或小写)组成

出处:

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

代码:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        ti = 0
        maxlen = 0
        i = 0
        while i < len(s):
            t = 1
            while t <= i and i + t < len(s):
                if s[i + t] == s[i - t]:
                    t += 1
                else:
                    break
            t -= 1
            if 2 * t + 1 > maxlen:
                ti = i - t
                maxlen = 2 * t + 1
            i += 1
        i = 0
        while i < len(s):
            t = 1
            while t <= i + 1 and i + t < len(s):
                if s[i - t + 1] == s[i + t]:
                    t += 1
                else:
                    break
            t -= 1
            if 2 * t > maxlen:
                ti = i - t + 1
                maxlen = 2 * t
            i += 1
        return s[ti:ti+maxlen]
# %%
s = Solution()
print(s.longestPalindrome('babad'))
print(s.longestPalindrome('cbbd'))

输出:

bab
bb


3. 逆波兰表达式求值

根据 逆波兰表示法,求表达式的值。

有效的算符包括 +-*/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

  • 整数除法只保留整数部分。
  • 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

示例 1:

输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

示例 3:

输入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
输出:22
解释:
该算式转化为常见的中缀算术表达式为:
((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22

提示:

  • 1 <= tokens.length <= 10^4
  • tokens[i] 要么是一个算符("+""-""*" 或 "/"),要么是一个在范围 [-200, 200] 内的整数

逆波兰表达式:

逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。

  • 平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。
  • 该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。

逆波兰表达式主要有以下两个优点:

  • 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。
  • 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

出处:

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

代码:

class Solution(object):
    def evalRPN(self, tokens):
        """
        :type tokens: List[str]
        :rtype: int
        """
        stack = []
        for token in tokens:
            if token not in ["+", "-", "*", "/"]:
                stack.append(int(token))
            else:
                num1 = stack.pop()
                num2 = stack.pop()
                if token == "+":
                    stack.append(num1 + num2)
                elif token == "-":
                    stack.append(num2 - num1)
                elif token == "*":
                    stack.append(num1 * num2)
                elif token == "/":
                    if num1 * num2 < 0:
                        result = -((-num2) // num1)
                        stack.append(result)
                    else:
                        stack.append(num2 // num1)
            #print(stack)
        return stack.pop()
# %%
s = Solution()
print(s.evalRPN(tokens = ["2","1","+","3","*"]))
print(s.evalRPN(tokens = ["4","13","5","/","+"]))
tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
print(s.evalRPN(tokens))

输出:

9
6
22


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

转义字符(\)对JavaScript中JSON.parse的影响概述

转义字符(\)对JavaScript中JSON.parse的影响 按照ECMA262第五版中的解释&#xff0c;JSON是一个提供了stringify和parse方法的内置对象&#xff0c;前者用于将js对象转化为符合json标准的字符串&#xff0c;后者将符合json标准的字符串转化为js对象。json标准参考<a href&q…

垃圾收集器面试总结(二)

G1 收集器 G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器。 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征。 被视为 JDK1.7 中 HotSpot 虚拟机的一个重要进化特征。它具备以下特点&#xff1a; 并行与并发&am…

chatgpt智能提效职场办公-ppt怎么转换成word文档

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 将PPT转换成Word文档有多种方法&#xff0c;以下是其中的一种&#xff1a; 打开PPT文件&#xff0c;并选择“文件”选项卡中的“另存为…

光流法Optical Flow,Lucas-Kanade方法,CV中光流的约束分析

光流法Optical Flow&#xff0c;Lucas-Kanade方法&#xff0c;CV中光流的约束分析 Multiple View Geometry1. Optical Flow Estimation2. The Lucas-Kanade Method2.1 Brightness Constancy Assumption2.2 Constant motion in a neighborhood2.3 Compute the velocity vector2.…

19 calloc 和 realloc 虚拟内存分配的调试

前言 前面提到了 malloc 虚拟内存分配相关的内容 malloc 虚拟内存分配的调试(1) malloc 虚拟内存分配的调试(2) 这里提 calloc 和 realloc, 这两个函数 虽然没有 malloc 使用频率那么高 但是 还是有很大的知名度的, 本文这里 我们来看一下 calloc 此函数传入两个参数, 第…

【系统集成项目管理工程师】项目成本管理

&#x1f4a5;十大知识领域&#xff1a;项目成本管理 主要考计算题 项目进度管理包括以下 4 个过程: 制订成本管理计划成本估算成本预算成本控制 一、制订成本管理计划 制订了项目成本结构、估算、预算和控制的标准 输入工具与技术输出项目管理计划项目章程事业环境因素组织过…

拼凑出来的低代码平台,真的好用吗?(浅谈行业怪象)

0️⃣前言 这几年低代码概念非常火热&#xff0c;市面上的低代码平台如雨后春笋应运而生&#xff0c;有许多身边的朋友对我说&#xff1a;“未来的研发方式一定是低代码的、低技术门槛的&#xff0c;低代码开发是一项技术革新。 ” 然而&#xff0c;就在我打算对它进行深入研究…

【业务数据分析】——十大常用数据分析方法

目录 一、数据分析方法 二、营销管理方法论 1、SWOT分析 2、PEST分析 3、4P理论 三、常用数据分析方法论 1、公式拆解 2、对比分析 3、A/Btest 4、象限分析 5、帕累托分析 6、漏斗分析 7、路径分析 8、留存分析 9、5W2H分析法 10、麦肯锡逻辑树分析法 一、数据…

基于html+css的图片展示23

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

4.4 埃尔米特插值

为什么有埃尔米特插值法&#xff1a; 埃尔米特插值法是一种常用的数值方法&#xff0c;主要用于在给定的数据点集上构造一个可微的函数来近似描述这些数据点的趋势和特征。埃尔米特插值法有以下几个优点&#xff1a; 精度高&#xff1a;埃尔米特插值法可以通过给定数据点的函数…

如何在个人web项目中使用会话技术(cookiesession)?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录 一. 什么是会话&#xff1f;二. 为什么要使用会话技术&#xff1f;三. 如何使用会话技术&#xff1f;3.1 Cookie(客户端的会话技术…

springboot+vue 个人健康信息管理系统

系统分为用户和医师&#xff0c;管理员三个角色 管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行添加&#xff0c;删除&#xff0c;修改&#xff0c;查询 4.医师管理&am…

seo文章批量更新-SEO文章自动批量生成

使用SEO文章生成器&#xff0c;让您的网站排名更靠前&#xff01; 您是否对搜索引擎排名感到困扰&#xff1f;难道您想要网站排名更好&#xff0c;但却没有足够的时间和资源进行SEO优化吗&#xff1f;那么您需要尝试使用SEO文章生成器来帮助您的网站获得更好的排名&#xff01…

数据结构(二)—— 链表

文章目录 一、链表基础1.1 链表定义1.2 创建链表1.3 删除链表某一节点1.4 与数组的对比二、题2.1 203 移除链表元素2.2 707 设计链表2.3 206 反转单链表2.4 24 两两交换链表中的节点2.5 9 删除链表的倒数第N个节点2.6 面试题 02.07. leetcode160 链表相交2.7 142 环形链表II2.7…

Verilog带参数的`define用法

宏除了可以进行简单的文本替换,还可以像函数和任务一样传递指定多个参数分别对文本进行对应的替换. 示例1&#xff1a; define Disp(pa,pb,pc) \initial \begin \#1200; \$display("%d \n",(papbpc)); \$display(" data_ pa data_ pb data_ pc %d",(…

微信小程序 基于Promise 对 wx.request 封装处理

导语&#xff1a; 当我们进行微信小程序开发的时候&#xff0c;会经常涉及到发送网络请求来进行后台数据交互&#xff0c;而在微信小程序中&#xff0c;用来 发送请求的方法是 wx.request() , 但是由于 wx.request() 方法 不支持 Promise 风格的调用&#xff0c;所以导致 wx.re…

【C++从0到王者】第一站:从C到C++

目录 一、命名空间 1.C的命名缺陷 2.域和命名空间 3.命名空间的使用与嵌套 二、输入输出 三、缺省参数&#xff08;默认参数&#xff09; 1.缺省参数的概念 2.缺省参数分类 1>全缺省参数 2>半缺省参数 3.缺省参数的一些使用场景 4.缺省参数在分文件使用的注意…

系统运维(Docker篇)

前言 打怪升级之路&#xff0c;从未停息 ​ 在这个社会信息技术的发展速度越来越快&#xff0c;这种快速发展带来了激烈的竞争。在这个竞争性的环境中&#xff0c;只有不断学习和更新自己的技能&#xff0c;才能保持竞争力。其次随着云计算、容器化、自动化等技术的出现&…

Qt Quick - 容器控件综述

Qt Quick - 容器控件综述 一、概述二、ApplicationWindow Control三、Frame Control四、GroupBox Control五、Page Control六、Pane Control七、ScrollView Control八、StackView Control九、SwipeView Control十、TabBarControl十一、ToolBar控件 一、概述 Qt Quick Controls…

Linux基础——FTP原理与配置

Linux基础——FTP原理与配置 一、文件传输协议——FTP服务二、ftp配置文件解析三、FTP服务器搭建 一、文件传输协议——FTP服务 FTP是典型的C/S结构的应用层协议&#xff0c;需要由服务器软件、客户端软件两个部分共同实现文件传输功能 FTP 连接模式 FTP服务器默认使用TCP协议…