day27|leetcode|C++| 39. 组合总和 | 40. 组合总和 II |131. 分割回文串

Leetcode 39. 组合总和

链接:39. 组合总和

class Solution {
private:vector<vector<int>> result; // 用于存放符合条件的结果集合vector<int> path; // 用于存放当前的路径// 回溯函数,用于搜索符合条件的组合// candidates: 候选数组// target: 目标和// sum: 当前路径上元素的和// startIndex: 当前搜索的起始位置void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {// 如果当前路径和大于目标和,直接返回,因为已经不可能找到符合条件的组合if (sum > target) {return;}// 如果当前路径和等于目标和,说明找到了符合条件的组合,将其加入结果集if (sum == target) {result.push_back(path);return;}// 从 startIndex 开始搜索可能的组合for (int i = startIndex; i < candidates.size(); i++) {// 将当前候选元素加入路径中sum += candidates[i];path.push_back(candidates[i]);// 递归搜索下一个候选元素,startIndex 保持不变,因为一个元素可以被多次选取backtracking(candidates, target, sum, i);// 回溯,撤销处理的候选元素,继续尝试其他组合sum -= candidates[i];path.pop_back();}}
public:// 主函数,用于找到所有组合的总和等于目标值的情况// candidates: 候选数组// target: 目标和vector<vector<int>> combinationSum(vector<int>& candidates, int target) {// 调用回溯函数开始搜索符合条件的组合backtracking(candidates, target, 0, 0);// 返回结果集return result;}
};

Leetcode 40. 组合总和 II

链接:40. 组合总和 II

class Solution {
private:vector<vector<string>> result; // 存放符合条件的结果集合vector<string> path; // 存放已经回文的子串// 回溯函数,用于搜索符合条件的分割方案// s: 待分割的字符串// startIndex: 当前搜索的起始位置void backtracking(const string& s, int startIndex) {// 如果起始位置已经大于等于s的大小,说明已经找到了一组分割方案if (startIndex >= s.size()) {result.push_back(path);return;}// 从startIndex开始,尝试分割出回文子串for (int i = startIndex; i < s.size(); i++) {// 如果[startIndex, i]区间的子串是回文串if (isPalindrome(s, startIndex, i)) {  // 获取[startIndex, i]在s中的子串string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str); // 将回文子串加入path中// 递归搜索以i+1为起始位置的子串backtracking(s, i + 1);  path.pop_back(); // 回溯,撤销本次添加的子串,尝试其他分割方案}}}// 判断字符串s中从start到end位置的子串是否为回文串bool isPalindrome(const string& s, int start, int end) {while (start < end) {if (s[start] != s[end]) {return false;}start++;end--;}return true;}public:// 主函数,用于生成符合条件的分割方案// s: 待分割的字符串vector<vector<string>> partition(string s) {// 清空结果集result.clear();// 调用回溯函数开始搜索符合条件的分割方案backtracking(s, 0);// 返回结果集return result;}
};

Leetcode 131. 分割回文串

链接:131. 分割回文串

class Solution {
private:vector<vector<string>> result; // 存放符合条件的结果集合vector<string> path; // 存放已经回文的子串// 回溯函数,用于搜索符合条件的分割方案// s: 待分割的字符串// startIndex: 当前搜索的起始位置void backtracking(const string& s, int startIndex) {// 如果起始位置已经大于等于s的大小,说明已经找到了一组分割方案if (startIndex >= s.size()) {result.push_back(path);return;}// 从startIndex开始,尝试分割出回文子串for (int i = startIndex; i < s.size(); i++) {if (isPalindrome(s, startIndex, i)) {   // 如果是回文子串// 获取[startIndex,i]在s中的子串string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str); // 将回文子串加入path中} else {                                // 如果不是回文子串,跳过continue;}backtracking(s, i + 1); // 递归,寻找i+1为起始位置的子串path.pop_back(); // 回溯过程,弹出本次已经添加的子串,以便尝试其他分割方案}}// 判断字符串s中从start到end位置的子串是否为回文串bool isPalindrome(const string& s, int start, int end) {for (int i = start, j = end; i < j; i++, j--) {if (s[i] != s[j]) { // 如果字符不相等,则不是回文串return false;}}return true; // 如果所有字符相等,则是回文串}public:// 主函数,用于生成符合条件的分割方案// s: 待分割的字符串vector<vector<string>> partition(string s) {// 清空结果集result.clear();// 调用回溯函数开始搜索符合条件的分割方案backtracking(s, 0);// 返回结果集return result;}
};

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

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

相关文章

Stable Diffusion WebUI 生成参数:采样器(Sampling method)和采样步数(Sampling steps)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 本文将深入探讨Stable Diffusion WebUI生成参数中的采样器和采样步数&#xff0c;旨在为读者呈现一个全面而细致的解析。我们将从采样器和采样步数的概念出发&…

云原生周刊:Istio 加入 Phippy 家族 | 2024.3.18

开源项目推荐 ko "ko" 是一个用于构建和部署 Go 应用程序的简单、快速的容器镜像构建工具。它适用于那些镜像中只包含单个 Go 应用程序且没有或很少依赖于操作系统基础镜像的情况&#xff08;例如没有 cgo&#xff0c;没有操作系统软件包依赖&#xff09;。"k…

内网安全之-NTLM协议详解

NTLM&#xff08;New Technology LAN Manager&#xff09;身份验证协议是微软用于Windows身份验证的主要协议之一。早起SMB协议以明文口令的形式在网络上传输&#xff0c;因此产生了安全性问题。后来出现了LM&#xff08;LAN Manager&#xff09;身份验证协议&#xff0c;它非常…

数据可视化实战(二)

将每个城市在每个月份平均PM2.5绘制成折线图 import pandas as pd import matplotlib.pyplot as plt df pd.read_excel(./PM2.5.xlsx)display(df.head(10)) df.shape # (161630, 15)城市年份月份日期小时季节PM2.5露点湿度压强温度风向累计风速降水量累计降水量0北京2010112…

XML语言的学习记录3-解析

学习笔记&#xff1a; 一、 解析XML文档&#xff1a; 1.使用 XMLHttpRequest 对象&#xff0c;将xml文档放入XML DOM对象中&#xff1a; xmlhttpnew XMLHttpRequest(); xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDocxmlhttp.response…

qt+ffmpeg 实现音视频播放(二)之音频播放

一、音频播放流程 1、打开音频文件 通过 avformat_open_input() 打开媒体文件并分配和初始化 AVFormatContext 结构体。 函数原型如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 参数说…

visual studio 安装 IronPython

从Nuget管理工具安装IronPython。 用Visual Studio Installer安装“Python开发”工作负荷。 在解决方案窗口&#xff0c;右键项目根目录&#xff1a;添加->新建文件夹&#xff08;PythonScripts&#xff09;。 右键PythonScripts&#xff1a;添加->新建项&#xff08;mai…

Docker的简介及安装

Docker 是什么 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。诞生于2013年&#xff0c;最 初的发起者是dotCloud公司&#xff0c;后来改名为Docker Inc&#xff0c;专注于Docker 相关技术和产品的开发。Docker 项目目前已经加入了Linux基金会…

Dubbo是什么?请简要描述其主要功能。Dubbo的架构是怎样的?请解释其核心组件及其作用。

Dubbo是什么&#xff1f;请简要描述其主要功能。 Dubbo是一个高性能、轻量级的Java RPC框架&#xff0c;主要用于构建分布式服务系统。它致力于提供高性能和透明化的远程服务调用方案&#xff0c;以及SOA服务治理方案。Dubbo的主要功能包括&#xff1a; 远程调用&#xff1a;D…

【办公类-22-11】周计划系列(5-3)“周计划-03 周计划内容循环修改“ (2024年调整版本)

背景需求&#xff1a; 前文从原来的“新模版”文件夹里提取了周计划主要内容和教案内容。 【办公类-22-10】周计划系列&#xff08;5-2&#xff09;“周计划-02源文件docx读取5天“ &#xff08;2024年调整版本&#xff09;-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞29次&…

基于消失点的相机自标定

基于消失点的相机自标定 附赠最强自动驾驶学习资料&#xff1a;直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中&#xff0c;平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…

边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 云端系统数据库设计(五)

专栏目录 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 – 整体介绍&#xff08;一&#xff09; 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 – 边缘设备图像识别及部署&#xff08;二&#xff09; 边缘计算WEB端应用融合&#xf…

【开发】Redis 的理解与数据存储格式

目录 相关传送门 1. NOSQL和关系型数据库比较 2. 主流的NOSQL产品 3. Redis的理解 4. redis数据存储格式 4.1 String 4.2 Hash 4.3 List 4.4 Set 4.5. sorted_set 注&#xff1a;手机端浏览本文章可能会出现 “目录”无法有效展示的情况&#xff0c;请谅解&#xf…

Hive:数据仓库利器

1. 简介 Hive是一个基于Hadoop的开源数据仓库工具&#xff0c;可以用来存储、查询和分析大规模数据。Hive使用SQL-like的HiveQL语言来查询数据&#xff0c;并将其结果存储在Hadoop的文件系统中。 2. 基本概念 介绍 Hive 的核心概念&#xff0c;例如表、分区、桶、HQL 等。 …

Tomcat Session ID---会话保持

简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…

Javaweb学习记录(四)分层处理架构-分层解耦

三层架构 程序设计分为下面三层架构&#xff0c;分别为Controller控制层&#xff0c;Service逻辑处理层&#xff0c;Dao数据访问层。这三层各自执行自己所对应的功能&#xff0c;使程序的扩展性和可维护性提高 例如下面我想设计一个分层的程序&#xff0c;实现Controller层&am…

(二)pulsar安装在独立的docker中,python测试

版本: 3.2.x 官网: https://pulsar.apache.org/docs/3.2.x/getting-started-docker/ 安装pulasr服务 拉取镜像 # sudo docker pull apachepulsar/pulsar:3.0.3 sudo docker pull apachepulsar/pulsar:3.2.1运行docker CURRENT_DIR$(cd dirname $0; pwd) BASE_DIR$(cd $(dir…

MidJourney 使用指北

官网&#xff1a;docs.midjourney.com 文档&#xff1a;docs.midjourney.com/docs/quick-… PS&#xff1a;魔法需要订阅使用了 准备工作 一、进入 discord官网 二、下载 Discord App 三、注册Discord账号 创建服务器 登录 discord App&#xff0c;点击添加按钮&#xff…

AJAX——综合案例

1 Bootstrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 引入bootstrap.css和bootstrap.js准备弹框标签&#xff0c;确认结构通过自定义属性&#xff0c;控制弹框的显示和隐藏 <!DOCTYPE html> <html la…

详解Java常用排序算法(10种,含演示动画)

Java常用的排序算法有以下几种&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;归并排序&#xff08;Merge Sort&#x…