蓝桥杯例题五

news/2025/1/31 18:56:59 标签: 蓝桥杯, 职场和发展

无论你面对多大的困难和挑战,都要保持坚定的信念和积极的态度。相信自己的能力和潜力,努力不懈地追求自己的目标和梦想。不要害怕失败,因为失败是成功的垫脚石。相信自己的选择和决策,不要被他人的意见和批评左右。坚持不懈地努力,即使前进的道路艰难,也要勇敢迈出每一步。相信自己的能力,相信自己的梦想,你一定能够创造出属于自己的辉煌。无论遇到什么困难和挫折,都要坚持下去,因为只有坚持才能看到胜利的曙光。相信自己,你是无坚不摧的战士,你是无所不能的人。无论多么艰难,也不要放弃,因为成功就在不远的前方。相信自己的力量,做好准备,迎接挑战。只有不断努力,才能收获更多的幸福与成功。

蓝桥杯官网蓝桥杯大赛 — 全国大学生TMT行业赛事

刷题力扣 (LeetCode) 全球极客挚爱的技术成长平台

目录

题目9:最长递增子序列

背景描述:

输入格式:

输出格式:

样例输入:

样例输出:

解答过程:

Python代码实现及详细注释:

题目10:括号生成

背景描述:

输入格式:

输出格式:

样例输入:

样例输出:

解答过程:

Python代码实现及详细注释:

总结


题目9:最长递增子序列

背景描述:

给定一个未排序的整数数组,找到最长递增子序列(LIS)的长度。最长递增子序列是指在原数组中严格递增的一个子序列,不要求连续。

输入格式:

第一行包含一个整数n (1 <= n <= 10^5),表示数组的长度。 第二行包含n个整数,表示数组元素。

输出格式:

输出一个整数,表示最长递增子序列的长度。

样例输入:

6
10 9 2 5 3 7
样例输出:
4
解答过程:

动态规划结合二分查找 是解决此类问题的有效方法。我们可以使用一个辅助数组 dp 来记录当前已知的最长递增子序列,并通过二分查找来优化更新操作。

步骤:

  1. 初始化:
    • 创建一个空列表 dp,用于存储当前最长递增子序列中的最小尾部值。
  2. 遍历数组:
    • 对于每个元素 num,如果 num 大于 dp 的最后一个元素,则将其添加到 dp 中;否则,使用二分查找找到 dp 中第一个大于等于 num 的位置并替换它。
  3. 结果:
    • 最终 dp 的长度即为最长递增子序列的长度。
Python代码实现及详细注释:
import bisect

def length_of_lis(nums):
    dp = []
    for num in nums:
        # 使用二分查找找到dp中第一个大于等于num的位置
        pos = bisect.bisect_left(dp, num)
        if pos == len(dp):
            dp.append(num)  # 如果num大于dp的所有元素,则追加
        else:
            dp[pos] = num  # 否则替换掉第一个大于等于num的元素
    return len(dp)

# 示例输入
nums = [10, 9, 2, 5, 3, 7]

# 调用函数并打印结果
print(length_of_lis(nums))  # 输出: 4

题目10:括号生成

背景描述:

给出n对括号,编写一个函数来生成所有可能的并且有效的括号组合。

输入格式:

输入一个整数n (1 <= n <= 8),表示生成括号对的数量。

输出格式:

输出所有可能的有效括号组合,每种组合一行。

样例输入:
3
样例输出:
((()))
(()())
(())()
()(())
()()()
解答过程:

回溯算法 是解决此类问题的有效方法。我们可以通过递归构建所有可能的括号组合,并在构建过程中进行有效性检查。

步骤:

  1. 初始化:
    • 设置初始状态为空字符串 current 和计数器 open_count 和 close_count 分别记录当前使用的左括号和右括号数量。
  2. 递归生成括号:
    • 如果当前使用的左括号数量小于n,则可以添加一个左括号。
    • 如果当前使用的右括号数量小于左括号数量,则可以添加一个右括号。
    • 当左右括号数量均达到n时,说明生成了一个有效组合。
  3. 结果:
    • 将所有有效组合存储在一个列表中并返回。
Python代码实现及详细注释:
def generate_parenthesis(n):
    def backtrack(current, open_count, close_count):
        if len(current) == 2 * n:
            result.append(current)
            return
        
        if open_count < n:
            backtrack(current + '(', open_count + 1, close_count)
        
        if close_count < open_count:
            backtrack(current + ')', open_count, close_count + 1)
    
    result = []
    backtrack("", 0, 0)
    return result

# 示例输入
n = 3

# 调用函数并打印结果
for combination in generate_parenthesis(n):
    print(combination)

总结

这两个题目分别涉及了不同的算法思想和技巧:

  • 最长递增子序列 使用了动态规划结合二分查找的方法,适用于处理需要寻找最优子结构的问题。
  • 括号生成 使用了回溯算法,这是一种常见的用于生成所有可能解的方法,特别适合用于排列组合问题。

http://www.niftyadmin.cn/n/5838836.html

相关文章

【前端学习路线】前端工程化 详细知识点学习路径(附学习资源)

&#x1f4da;学习资源&#xff1a; 前端开发&#xff1a;零基础入门到项目实战 >> 前端开发&#xff1a;边学边练 >> 原学习路径下载 >>

2024 ICLR Spotlight Learning-Feedback

机器学习 SalUn: Empowering Machine Unlearning via Gradient-based Weight Saliency in Both Image Classification and Generation 试图解决的问题是机器学习模型中的机器遗忘问题 关注模型中的特定权重而不是整个模型 深度学习 Dictionary Contrastive Forward Learning v…

Nginx的常用模块

一、概述 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器&#xff0c;它通过模块化架构提供了丰富的功能。 二、模块介绍 1、autoindex模块 1.1、位置&#xff1a; http、server、location 1.2、开启autoindex server { listen 80; server_name _; location / { roo…

鸢尾花书01---基本介绍和Jupyterlab的上手

文章目录 1.致谢和推荐2.py和.ipynb区别3.Jupyterlab的上手3.1入口3.2页面展示3.3相关键介绍3.4代码的运行3.5重命名3.6latex和markdown说明 1.致谢和推荐 这个系列是关于一套书籍&#xff0c;结合了python和数学&#xff0c;机器学习等等相关的理论&#xff0c;总结的7本书籍…

@Inject @Qualifier @Named

Inject Qualifier Named 在依赖注入&#xff08;DI&#xff09;中&#xff0c;Inject、Qualifier 和 Named 是用于管理对象创建和绑定的关键注解。以下是它们的用途、依赖配置和代码示例的详细说明&#xff1a; 1. 注解的作用 Inject&#xff1a;标记需要注入的构造函数、字段…

基于微信小程序的4S店客户管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Java CAS操作

通过前面的学习认识到了CPU缓存&#xff0c;Java内存模型&#xff0c;以及线程安全的原子、可见、顺序三大特性。本文则重点认识CAS操作&#xff0c;这是Java并发编程常见的一个操作&#xff0c;AbstractQueuedSynchronizer基于此操作提供了丰富的同步器和各种锁。 CAS&#x…

Big Bird:适用于更长序列的Transformer模型

摘要 基于Transformer的模型&#xff0c;如BERT&#xff0c;已成为自然语言处理&#xff08;NLP&#xff09;中最成功的深度学习模型之一。然而&#xff0c;它们的一个核心限制是由于其全注意力机制&#xff0c;对序列长度的二次依赖&#xff08;主要是在内存方面&#xff09;…