力扣刷题之旅:进阶篇(三)
力扣(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
这些代码示例展示了动态规划、回溯算法和堆在解决实际问题中的应用。通过不断学习和实践,我们可以逐渐掌握这些算法的核心思想和应用技巧,为解决更复杂的问题打下坚实的基础。
相关文章:
力扣刷题之旅:进阶篇(三)
力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 一、动态规划(DP) 首先,让我们来…...
代码随想录 Leetcode55. 跳跃游戏
题目: 代码(首刷自解 2024年2月9日): 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语言中,管理请求的上下文信息对于构建可靠的并发程序至关重要。context 包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的 context 包,包括其基本概念、用法、实际应用场景和最佳实践,…...
springboot170图书电子商务网站的设计与实现
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...
设计模式(结构型模式)适配器模式
目录 一、简介二、使用2.1、目标接口2.2、被适配者2.3、适配器2.4、使用 一、简介 适配器模式是一种结构型设计模式,允许将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式通常用于连接两…...
计算机网络基本知识(二)
文章目录 概要分层为什么分层怎么分层?1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识:概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题(复杂) 大问题划分为小问题 怎么分层&#…...
158基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序
基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序,输出齿轮啮合轨迹及传递误差。程序已调通,可直接运行。 158 matlab 弧齿锥齿轮啮合轨迹 传递误差 (xiaohongshu.com)...
C#中的浅度和深度复制(C#如何复制一个对象)
文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中,浅度复制(Shallow Copy)和深度复制(Deep Copy)是两种不同的对象复制方式,满足不同的应用场景需求,它们主要区别在于处…...
2.6日学习打卡----初学RabbitMQ(一)
2.6日学习打卡 初识RabbitMQ、 一. MQ 消息队列 MQ全称Message Queue(消息队列),是在消息的传输过程中保 存消息的容器。多用于系统之间的异步通信。 同步通信相当于两个人当面对话,你一言我一语。必须及时回复 异步通信相当于通…...
Rust语言之集合
文章目录 一、元组(tuple)1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量(Vector)向量定义向量遍历向量追加向量插…...
有道论文翻译接口,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安装 (1)解压缩 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 (2)配置 cd /usr/local/flume/conf cp ./flume-env.sh.template…...
环境配置:Ubuntu18.04 ROS Melodic安装
前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统,其核心代码采用C编写,并以BSD许可发布。ROS起源于2007年,是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年,ROS团队从…...
2024.2.7-8 寒假训练记录(21)
文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚,主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…...
C++ pair 的使用
pair的作用 C 中的 std::pair 是标准模板库 (STL) 提供的一个容器,它能够存储两个不同类型的数据作为一个整体,其中first:访问 pair 的第一个元素。second:访问 pair 的第二个元素。 int main() {pair<string, int> p;//通…...
AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能
论文题目:CoPL: Contextual Prompt Learning for Vision-Language Understanding 论文链接:https://arxiv.org/abs/2307.00910 提示学习(Prompt Learning)在近几年的快速发展,激活了以Transformer为基础的大型语言模型…...
Arcgis使用过程中常见问题解决方法
Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。 出现这个原因是你所用的电脑系统文件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-对象池模式
对象池模式,Object Pool Pattern,当你的应用程序需要频繁创建和销毁某种资源(比如数据库连接、线程、socket连接等)时,Object Pool 设计模式就变得很有用。它通过预先创建一组对象并将它们保存在池中,以便在…...
Oracle笔记-为表空间新增磁盘(ORA-01691)
如下报错: 原因是Oracle表空间满了,最好是新增一个存储盘。 #查XXX命名空间目前占用了多大的空间 select FILE_NAME,BYTES/1024/1024 from dba_data_files where tablespace_name XXXX #这里的FILE_NAME能查到DBF的存储位置#将对应的datafile设置为30g…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
