当前位置: 首页 > news >正文

力扣刷题之旅:进阶篇(三)

        力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 

--点击进入刷题地址 


一、动态规划(DP)

  • 首先,让我们来看一个使用动态规划解决“最长回文子串”问题的代码示例:
def longestPalindrome(s: str) -> str:  n = len(s)  if n < 2:  return s  # dp[i][j] 表示从索引 i 到 j 的子串是否为回文串  dp = [[False] * n for _ in range(n)]  start, max_len = 0, 1  # 记录最长回文子串的起始位置和长度  # 单个字符一定是回文串  for i in range(n):  dp[i][i] = True  if n > 1 and s[i] == s[i + 1]:  dp[i][i + 1] = True  start = i  max_len = 2  # 检查长度大于 2 的子串  for l in range(3, n + 1):  for i in range(n - l + 1):  j = i + l - 1  if s[i] == s[j] and dp[i + 1][j - 1]:  dp[i][j] = True  if l > max_len:  start = i  max_len = l  return s[start:start + max_len]  # 示例用法  
print(longestPalindrome("babad"))  # 输出: "bab"

二、回溯算法

  • 接下来,我们来看一个使用回溯算法解决“组合总和”问题的代码示例:
def combinationSum(candidates: List[int], target: int) -> List[List[int]]:  def backtrack(start, path, target):  if target == 0:  result.append(path)  return  for i in range(start, len(candidates)):  # 剪枝:如果当前数字大于目标值,则后续的数字一定也大于目标值,可以提前退出循环  if candidates[i] > target:  break  # 选择当前数字  backtrack(i, path + [candidates[i]], target - candidates[i])  candidates.sort()  # 对数组进行排序,有助于提前退出循环进行剪枝  result = []  backtrack(0, [], target)  return result  # 示例用法  
print(combinationSum([2, 3, 6, 7], 7))  # 输出: [[2, 2, 3], [7]]

三、堆(Heap)

  • 最后,我们来看一个使用堆(特别是最小堆)解决“K个最小数”问题的代码示例:
import heapq  def getKthSmallest(nums: List[int], k: int) -> int:  return heapq.nsmallest(k, nums)[-1]  # 示例用法  
print(getKthSmallest([3,2,1,5,6,4], 2))  # 输出: 5

        这些代码示例展示了动态规划、回溯算法和堆在解决实际问题中的应用。通过不断学习和实践,我们可以逐渐掌握这些算法的核心思想和应用技巧,为解决更复杂的问题打下坚实的基础。

相关文章:

力扣刷题之旅:进阶篇(三)

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 一、动态规划&#xff08;DP&#xff09; 首先&#xff0c;让我们来…...

代码随想录 Leetcode55. 跳跃游戏

题目&#xff1a; 代码(首刷自解 2024年2月9日&#xff09;&#xff1a; class Solution { public:bool canJump(vector<int>& nums) {int noz 0;for (int i nums.size() - 2; i > 0; --i) {if (nums[i] 0) {noz;continue;} else {if (nums[i] > noz) noz …...

Go Context -- 管理请求的上下文信息

在Go语言中&#xff0c;管理请求的上下文信息对于构建可靠的并发程序至关重要。context 包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的 context 包&#xff0c;包括其基本概念、用法、实际应用场景和最佳实践&#xff0c…...

springboot170图书电子商务网站的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

设计模式(结构型模式)适配器模式

目录 一、简介二、使用2.1、目标接口2.2、被适配者2.3、适配器2.4、使用 一、简介 适配器模式是一种结构型设计模式&#xff0c;允许将一个类的接口转换成客户端所期望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式通常用于连接两…...

计算机网络基本知识(二)

文章目录 概要分层为什么分层怎么分层&#xff1f;1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识&#xff1a;概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题&#xff08;复杂&#xff09; 大问题划分为小问题 怎么分层&#…...

158基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序

基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序&#xff0c;输出齿轮啮合轨迹及传递误差。程序已调通&#xff0c;可直接运行。 158 matlab 弧齿锥齿轮啮合轨迹 传递误差 (xiaohongshu.com)...

C#中的浅度和深度复制(C#如何复制一个对象)

文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中&#xff0c;浅度复制&#xff08;Shallow Copy&#xff09;和深度复制&#xff08;Deep Copy&#xff09;是两种不同的对象复制方式&#xff0c;满足不同的应用场景需求&#xff0c;它们主要区别在于处…...

2.6日学习打卡----初学RabbitMQ(一)

2.6日学习打卡 初识RabbitMQ、 一. MQ 消息队列 MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保 存消息的容器。多用于系统之间的异步通信。 同步通信相当于两个人当面对话&#xff0c;你一言我一语。必须及时回复 异步通信相当于通…...

Rust语言之集合

文章目录 一、元组&#xff08;tuple&#xff09;1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量&#xff08;Vector&#xff09;向量定义向量遍历向量追加向量插…...

有道论文翻译接口,python版和lua版

论文翻译接口python版 import requests import hashlib from urllib.parse import quotedef get_md5(s,is_hexTrue):md5hashlib.md5()md5.update(s.encode())if is_hex:return md5.hexdigest()return md5.digest()def translate(source_url,from_en,tozh-CHS):params {from: f…...

java大数据hadoop2.9.2 Flume安装操作

1、flume安装 &#xff08;1&#xff09;解压缩 tar -xzvf apache-flume-1.9.0-bin.tar.gz rm -rf apache-flume-1.9.0-bin.tar.gz mv ./apache-flume-1.9.0-bin/ /usr/local/flume &#xff08;2&#xff09;配置 cd /usr/local/flume/conf cp ./flume-env.sh.template…...

环境配置:Ubuntu18.04 ROS Melodic安装

前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统&#xff0c;其核心代码采用C编写&#xff0c;并以BSD许可发布。ROS起源于2007年&#xff0c;是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年&#xff0c;ROS团队从…...

2024.2.7-8 寒假训练记录(21)

文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚&#xff0c;主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…...

C++ pair 的使用

pair的作用 C 中的 std::pair 是标准模板库 (STL) 提供的一个容器&#xff0c;它能够存储两个不同类型的数据作为一个整体&#xff0c;其中first&#xff1a;访问 pair 的第一个元素。second&#xff1a;访问 pair 的第二个元素。 int main() {pair<string, int> p;//通…...

AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能

论文题目&#xff1a;CoPL: Contextual Prompt Learning for Vision-Language Understanding 论文链接&#xff1a;https://arxiv.org/abs/2307.00910 提示学习&#xff08;Prompt Learning&#xff09;在近几年的快速发展&#xff0c;激活了以Transformer为基础的大型语言模型…...

Arcgis使用过程中常见问题解决方法

Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败&#xff1b;无法创建新的数据库&#xff0c;权限被拒绝&#xff08;如下图&#xff09;。 出现这个原因是你所用的电脑系统文件dao360.…...

office文件转pdf在线预览

一、工具类 package com.sby.utils;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Locale;import com.aspose.cel…...

设计模式2-对象池模式

对象池模式&#xff0c;Object Pool Pattern&#xff0c;当你的应用程序需要频繁创建和销毁某种资源&#xff08;比如数据库连接、线程、socket连接等&#xff09;时&#xff0c;Object Pool 设计模式就变得很有用。它通过预先创建一组对象并将它们保存在池中&#xff0c;以便在…...

Oracle笔记-为表空间新增磁盘(ORA-01691)

如下报错&#xff1a; 原因是Oracle表空间满了&#xff0c;最好是新增一个存储盘。 #查XXX命名空间目前占用了多大的空间 select FILE_NAME,BYTES/1024/1024 from dba_data_files where tablespace_name XXXX #这里的FILE_NAME能查到DBF的存储位置#将对应的datafile设置为30g…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...