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

【代码随想录Day27】

Day 27 回溯算法03

今日任务

    1. 组合总和
  • 40.组合总和II
  • 131.分割回文串

代码实现

组合总和,直接套模板可解

 public List<List<Integer>> combinationSum(int[] candidates, int target) {backtracking(candidates, target, 0);return result;}void backtracking(int[] candidates, int target, int startIndex) {if (sum == target) {result.add(new ArrayList<>(path));return;}if (sum > target) {return;}for (int i = startIndex; i < candidates.length; i++) {path.add(candidates[i]);sum+=candidates[i];backtracking(candidates, target, i);sum-=candidates[i];path.remove(path.size() - 1);}}

组合总和II
这个就有点难,在模板之外要考虑怎么去重

public List<List<Integer>> combinationSum2(int[] candidates, int target) {Arrays.sort(candidates);backtracking2(candidates, target, 0, new boolean[candidates.length]);return result;}void backtracking2(int[] candidates, int target, int startIndex, boolean[] used) {if (sum == target) {result.add(new ArrayList<>(path));return;}if (sum > target) {return;}for (int i = startIndex; i < candidates.length; i++) {if (target - sum < candidates[i]) break;if ( i > 0 && candidates[i] == candidates[i - 1] && !used[i - 1]) {continue;}used[i] = true;path.add(candidates[i]);sum+=candidates[i];backtracking2(candidates, target, i + 1, used);used[i] = false;sum-=candidates[i];path.remove(path.size() - 1);}}

131.分割回文串
这个就太难了,模板还是那个模板,这里难以想到的是,当切割字符串的时候,从第二位开始,就相当于把第1、2位切割为一个字符,也就是说把startIndex当成切割线;至于解法中的动态规划部分,则完全不懂。

    public List<List<String>> partition(String s) {List<List<String>> result = new ArrayList<>();List<String> path = new ArrayList<>();backtracking(s, 0, result, path);return result;}void backtracking(String s, Integer startIndex, List<List<String>> result, List<String> path) {if (startIndex >= s.length()) {result.add(new ArrayList<>(path));return;}for (int i = startIndex; i < s.length(); i++) {String substring = s.substring(startIndex, i + 1);if (!isPalindrome(substring)) {continue;}path.add(substring);backtracking(s, i + 1, result, path);path.remove(path.size() - 1);}}public boolean isPalindrome(String s) {for (int i = 0; i < s.length()/2; i++) {if (s.charAt(i) != s.charAt(s.length() - i - 1)) {return false;}}return true;}

今日总结

  1. 有点难,但是模板依然可用,每个题里边都有难以想象到的难点
  2. 大数据?AI?有机会吗?
  3. 今天+2,希望再来两天,2024就回本啦

相关文章:

【代码随想录Day27】

Day 27 回溯算法03 今日任务 组合总和 40.组合总和II131.分割回文串 代码实现 组合总和&#xff0c;直接套模板可解 public List<List<Integer>> combinationSum(int[] candidates, int target) {backtracking(candidates, target, 0);return result;}void back…...

【一】【单片机】有关LED的实验

点亮一个LED灯 根据LED模块原理图&#xff0c;我们可以知道&#xff0c;通过控制P20、P21...P27这八个位置的高低电平&#xff0c;可以实现D1~D8八个LED灯的亮灭。VCC接的是高电平&#xff0c;如果P20接的是低电平&#xff0c;那么D1就可以亮。如果P20接的是高电平&#xff0c;…...

面试算法-49-缺失的第一个正数

题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 [1,2] 中的数字都…...

论文笔记:液体管道泄漏综合检测与定位模型

0 简介 An integrated detection and location model for leakages in liquid pipelines 1 摘要 许多液体&#xff0c;如水和油&#xff0c;都是通过管道运输的&#xff0c;在管道中可能发生泄漏&#xff0c;造成能源浪费、环境污染和对人类健康的威胁。本文描述了一种集成的…...

抖音视频批量提取软件|无水印视频下载

抖音视频批量提取软件&#xff0c;让您高效下载精彩内容&#xff01; 您是否经常需要下载抖音视频&#xff0c;但传统的下载方式繁琐且低效&#xff1f;别担心&#xff0c;我们为您提供了一款强大而智能的抖音视频批量提取软件&#xff0c;让您轻松实现下载无水印的精彩内容&am…...

Linux docker1--环境及docker安装

一、基础环境要求 Docker分为ce版本&#xff08;免费&#xff0c;试用7个月&#xff09;和ee版本&#xff08;收费&#xff09;。 最低配置要求&#xff1a;64位操作系统&#xff0c;centOS 7及以上&#xff0c;内核版本不低于3.10 二、部署docker 1、查看服务的基础环境是否满…...

uniapp使用uview - DatetimePicker 时间选择器 /时间戳转化

uniapp使用uview - DatetimePicker 时间选择器 /时间戳转化时转换日期格式后页面仍显示时间戳 单元格内显示时间&#xff0c;点击可出现时间选择器切换时间 <u-cell :isLinktrue click"selectTime" title"开始时间" :value"startTime">…...

python实现websocket

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输&#xff0c;而不是像 HTTP 协议那样&#xff0c;每次请求都需要建立新的连接。WebSocket 协议最初是由 HTML5 定义的&#xff0c;旨在提供一种更有效的替代方案&#xff0c;…...

ElasticSearch简介及常见用法

简介 Elasticsearch 是 Elastic Stack 核心的分布式搜索和分析引擎。 Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。 Kibana 使您能够以交互方式探索、可视化和分享对数据的见解&#xff0c;并管理和监控堆栈。 Elasticsearch 可以快速索…...

js iframe获取documen中的对象为空问题

原因其实是iframe加载是需要时间的&#xff0c;它还没加载完我就在js中直接获取对象了&#xff0c;所以获取为空 var idocument.getElementById("iframe"); i.onloadfunction(){console.log(i.contentDocument)console.log(i.contentWindow.document.getElementById…...

vue3子父组件之间的调用

子组件&#xff1a; capacityIndex.vue 父组件&#xff1a; index.vue A.子组件获取父组件属性 1.在父组件中引用子组件 import capacityIndex from "./capacityIndex"; <capacityIndex :tankInfo"tankInfo" :deviceNameInfo"deviceNameInfo…...

用 二层口 实现三层口 IP 通信的一个实现方法

我们一般用 undo portswitch 来将二层口转为三层口&#xff0c;但如果设备不支持的话&#xff0c;那么。。。 一、拓朴图&#xff1a; 二、实现方法&#xff1a; 起一个 vlan x&#xff0c;配置 vlanif地址&#xff0c;然后二层口划分到 vlan x 下&#xff0c;对端做同样的配置…...

(学习日记)2024.03.12:UCOSIII第十四节:时基列表

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…...

四.流程控制(顺序,分支,循环,嵌套)

c刚刚转过来的记得写在public static void main&#xff08;String[] args&#xff09;的花括号里 一.顺序结构 二.分支结构 if &#xff0c;switch 1.if (条件判断&#xff09; 2.if else 3.if else if else if ... else(它是一个一个否定来一个个执行判断的 4.s…...

了解常用开发模型 -- 瀑布模型、螺旋模型、增量与迭代、敏捷开发

目录 瀑布模型 开发流程 开发特征 优缺点 适用场景 螺旋模型 开发流程 开发特征 优缺点 适用场景 增量与迭代开发 什么是增量开发&#xff1f;什么是迭代开发&#xff1f; 敏捷开发 什么是敏捷开发四原则&#xff08;敏捷宣言&#xff09;&#xff1f; 什么是 s…...

使用 Vue CLI 创建一个 Vue2 项目

全局安装 Vue CLI 参考官网 Vue CLI&#xff0c;安装命令如下 npm install -g vue/cli 目前 Vue CLI 的最新版本为 v5.0.8 创建 Vue2 项目 在希望创建项目的目录下打开命令行&#xff0c;键入命令 vue create my-project 其中 my-project 更改为自己需要的项目名 随后&a…...

Linux工具 - 耀眼的git

~~~~ 前言耀眼的GitGit是什么&#xff08;本质&#xff09;Git出现的背景&#xff08;本着开源的精神&#xff09;在命令行中使用Git&#xff08;Come on 来使用Git吧&#xff09;.git文件说明新建仓库git clone 克隆云端仓库到本地git addgit commit -mgit pushgit pullgit st…...

Spring Security的开发

文章目录 1,介绍2, 核心流程3, 核心原理3.1 过滤器链机制3.2 主体3.3 认证3.4 授权3.5 流程图4, 核心对象4.1 UserDetailsService 接口4.2 PasswordEncoder 接口4.3 hasAuthority方法4.4 hasAnyAuthority方法4.5 hasRole方法4.5 hasAnyRole方法5, 核心注解5.1 @PreAuthorize5.1…...

C语言 实用调试技巧

我们的博客已经更新到了数据结构&#xff0c;但是当我在深耕数据结构时我发现我在C语言是遗漏了一个重要的东西&#xff0c;那就是C语言的使用调试技巧。这篇博客对数据结构非常重要&#xff0c;请大家耐心观看。 1. 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾…...

GPT的实现细节

关于GPT的代码细节&#xff0c;这里梳理了一下&#xff1a; 数据集构造 原始数据集schema&#xff1a; inputwho is your favorite basketball player? outputOf course Kobe Bryant!那么在构造训练集时&#xff0c;根据chunk size构造多个输入&#xff1a; input_1who is …...

构建全渠道智能通知系统:从高可用架构到用户体验优化

1. 全渠道智能通知系统的核心价值 想象一下这样的场景&#xff1a;你在电商平台下单后&#xff0c;系统立即通过短信发送订单确认通知&#xff1b;当你忘记支付时&#xff0c;APP推送会及时提醒&#xff1b;订单发货后&#xff0c;邮箱里静静躺着物流信息&#xff1b;而站内信则…...

低成本搭建AI知识库:Qwen3-Embedding-4B量化版仅需3GB显存教程

低成本搭建AI知识库&#xff1a;Qwen3-Embedding-4B量化版仅需3GB显存教程 1. 引言&#xff1a;为什么选择Qwen3-Embedding-4B&#xff1f; 在构建AI知识库时&#xff0c;文本向量化模型的选择至关重要。传统方案要么性能不足&#xff0c;要么资源消耗过大。Qwen3-Embedding-…...

密码学实战:从古典密码到AES,手把手教你用Python实现加密算法

密码学实战&#xff1a;从古典密码到AES的Python实现之旅 密码学作为信息安全的核心支柱&#xff0c;其发展历程就像一部浓缩的科技史。从凯撒大帝用过的简单字母替换&#xff0c;到如今保护我们银行卡交易的AES算法&#xff0c;加密技术始终在与破解者进行着无声的较量。本文…...

基于.NET 11 与C# 14的高性能安全客户端应用开发

基于.NET 11 与C# 14的高性能安全客户端应用开发 前言 在客户端应用开发领域&#xff0c;性能与安全始终是关键指标。随着.NET 11 和 C# 14 的推出&#xff0c;开发者拥有了更强大的工具来构建高性能且安全可靠的客户端应用。这些新技术不仅提升了应用的运行效率&#xff0c;还…...

破解AutoDock Vina金属对接难题:3种专业方案实战深度解析

破解AutoDock Vina金属对接难题&#xff1a;3种专业方案实战深度解析 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock Vina作为最广泛使用的开源分子对接引擎之一&#xff0c;在处理含金属元素的蛋白…...

Matlab粒子动画:3D爱心生成与动态模拟

1. 从零开始理解Matlab粒子动画 第一次看到3D爱心在屏幕上跳动时&#xff0c;那种震撼感至今难忘。作为理工科学生&#xff0c;我们常常用Matlab处理枯燥的数据&#xff0c;但很少有人知道它还能创作出如此浪漫的视觉效果。这就像用计算器弹钢琴——工具本身没有情感&#xff0…...

FLUX.1-dev开源镜像部署教程:像素幻梦免配置环境3步快速上手

FLUX.1-dev开源镜像部署教程&#xff1a;像素幻梦免配置环境3步快速上手 1. 像素幻梦简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的像素艺术生成工具。它采用独特的16-bit像素风格界面设计&#xff0c;为创作者提供沉浸式的AI绘图体验。 与传统AI…...

brpc配置中心高可用部署:集群配置与故障转移全攻略

brpc配置中心高可用部署&#xff1a;集群配置与故障转移全攻略 【免费下载链接】brpc brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendat…...

用74ls10和74ls20与非门搭建四人表决器:从真值表到电路图的完整设计流程

用74LS10和74LS20与非门搭建四人表决器&#xff1a;从真值表到电路图的完整设计流程 在数字电路设计中&#xff0c;表决器是一个经典的教学案例&#xff0c;它不仅能帮助理解组合逻辑电路的基本原理&#xff0c;还能锻炼从理论到实践的完整设计能力。本文将手把手带你用74LS10…...

TI C2000 DSP新手必看:用CCS建第一个工程时,如何避免头文件找不到的坑?

TI C2000 DSP开发避坑指南&#xff1a;从零构建CCS工程的正确姿势 第一次打开Code Composer Studio(CCS)时&#xff0c;那个充满按钮和菜单的界面就像面对一架航天飞机的控制台——每个开关都看起来很重要&#xff0c;但完全不知道从哪下手。特别是当你在教程指导下创建了第一个…...