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

Leetcode刷题详解—— 目标和

1. 题目链接:494. 目标和

2. 题目描述:

给你一个非负整数数组 nums 和一个整数 target

向数组中的每个整数前添加 '+''-' ,然后串联起所有整数,可以构造一个 表达式

  • 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1"

返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

示例 1:

输入:nums = [1,1,1,1,1], target = 3
输出:5
解释:一共有 5 种方法让最终目标和为 3 。
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3

示例 2:

输入:nums = [1], target = 1
输出:1

提示:

  • 1 <= nums.length <= 20
  • 0 <= nums[i] <= 1000
  • 0 <= sum(nums[i]) <= 1000
  • -1000 <= target <= 1000

3. 解法(回溯):

3.1 算法思路:

对于每个数,可以选择加上或减去它,依次枚举每一个数字,在每个数都被选择时检查得到的和是否等于目标值。如果等于,则记录结果。

需要注意的是,为了优化时间复杂度,可以提前计算出数组中所有数字的和,以及数组的长度。这样可以快速判断当前的和减去剩余的数是否已经超过了目标值target,或者当前的和加上剩下的数的和是否小于目标值target,如果满足条件,则可以直接回溯

3.2 递归流程:

  1. 递归结束条件:pos与数组长度相等,判断当前状态的path是否与目标值相等,若是计数加一

  2. 选择当前元素进行加操作,递归下一个位置,并更新参数path

  3. 选择当前元素进行减操作,递归下一个位置,并更新参数path

请添加图片描述

3.3 C++算法代码:

class Solution {int ret, aim; // ret用于记录满足条件的路径数量,aim用于存储目标和
public:int findTargetSumWays(vector<int>& nums, int target) {aim = target; // 初始化目标和dfs(nums, 0, 0); // 从数组的第一个元素开始搜索return ret; // 返回满足条件的路径数量}void dfs(vector<int>& nums, int pos, int path) {if (pos == nums.size()) { // 如果已经遍历完数组if (path == aim) ret++; // 如果当前路径的和等于目标和,则增加满足条件的路径数量return; // 结束当前递归}dfs(nums, pos + 1, path + nums[pos]); // 选择当前元素,将其加入路径中,继续搜索下一个元素dfs(nums, pos + 1, path - nums[pos]); // 不选择当前元素,将当前元素从路径中移除,继续搜索下一个元素}
};

相关文章:

Leetcode刷题详解—— 目标和

1. 题目链接&#xff1a;494. 目标和 2. 题目描述&#xff1a; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可…...

学习c#的第六天

目录 C# 判断 if 语句 嵌套 if 语句 switch 语句 嵌套 switch 语句 ? : 运算符 C# 循环 循环类型 while 循环 for/foreach 循环 do...while 循环 嵌套循环 循环控制语句 break 语句 continue 语句 无限循环 C# 判断 if 语句 在C#中&#xff0c;if语句用于根…...

第七章 :Spring Boot web开发常用注解(二)

第七章 :Spring Boot web开发常用注解(二) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个章节,可以作为web开发工程师注解参考手册,SpringBoot常用注解大全,一目了然!。本…...

IOC - Google Guice

Google Guice是一个轻量级的依赖注入框架&#xff0c;专注于依赖注入和IoC&#xff0c;适用于中小型应用。 Spring Framework是一个全面的企业级框架&#xff0c;提供了广泛的功能&#xff0c;适用于大型企业应用。 是吧&#xff01;IOC 容器不止Spring,还有Google Guice,来体…...

国际阿里云:Linux实例负载高问题排查和异常处理!!!

问题描述 在您使用ECS实例过程中&#xff0c;可能会遇到实例系统负载较高的情况&#xff0c;负载过高&#xff0c;可能会引发一系列异常问题&#xff0c;简单说您如下&#xff1a; CPU使用率或负载过高&#xff1a;一般来说&#xff0c;当CPU使用率≥80%时&#xff0c;定义为C…...

【数据结构】二叉树的遍历递归算法详解

二叉树的遍历 &#x1f4ab;二叉树的结点结构定义&#x1f4ab;创建一个二叉树结点&#x1f4ab;在主函数中手动创建一颗二叉树&#x1f4ab;二叉树的前序遍历&#x1f4ab;调用栈递归——实现前序遍历&#x1f4ab;递归实现中序和后序遍历 &#x1f4ab;二叉树的结点结构定义 …...

百度王颖:百度文库以AI创作能力突破语言边界,促进思想碰撞和文化融通

1月9日&#xff0c;2023年世界互联网大会乌镇峰会“网络传播与文明交流互鉴论坛”召开。百度副总裁、互娱和垂类平台负责人王颖出席并发表“以技术搭建跨文化交流桥梁”主题演讲。她表示&#xff0c;在大模型的加持下&#xff0c;百度各个产品都在重构&#xff0c;通过技术助力…...

人工智能基础_机器学习023_理解套索回归_认识L1正则---人工智能工作笔记0063

然后上一节我们说了L1,L2正则是为了提高,模型的泛化能力, 提高泛化能力,实际上就是把模型的公式的w,权重值,变小对吧. 然后我们这里首先看第一个L1正则,是怎么做到把w权重变小的 可以看到最上面是线性回归的损失函数,然后 L1可以看到,这个正则,就是在损失函数的基础上给损失…...

Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记

Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画的3D人脸模型。论文方法:论文结果:论文意义: 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画…...

Lenovo联想小新Air-14笔记本2021款AMD锐龙ALC版(82LM)原装出厂Win10镜像和Windows11预装OEM系统

下载链接&#xff1a;https://pan.baidu.com/s/1akLkXM2HIg3eO76jqM-LVA?pwdxvo6 提取码&#xff1a;xvo6 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;…...

在程序中链接静态库

现在我们把上面src目录中的add.cpp、div.cpp、mult.cpp、sub.cpp编译成一个静态库文件libcalc.a。 add_library(库名称 STATIC 源文件1 [源文件2] ...) link_libraries(<static lib> [<static lib>...]) 参数1&#xff1a;指定出要链接的静态库的名字 可以是全…...

TortoiseSVN 状态图标不显示的两种解决办法

文章目录 TortoiseSVN 方式解决注册表方式解决 TortoiseSVN 方式解决 在桌面或者资源管理器中鼠标右键打开 TortoiseSVN 设置选择 Icon Overlays (图标覆盖)Status cache&#xff08;状态缓存&#xff09; 选择 ‘Shell’ 选择 Icon Overlays&#xff08;图标覆盖&#xff09;…...

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘

文章目录 前言001[鹤城杯 2021]easy_crypto002[强网拟态 2021]拟态签到题003[SWPUCTF 2021 新生赛]crypto8004[SWPUCTF 2021 新生赛]crypto7005[SWPUCTF 2021 新生赛]crypto6006[SWPUCTF 2021 新生赛]ez_caesar007[SWPUCTF 2021 新生赛]crypto10008[鹤城杯 2021]A_CRYPTO009[SW…...

Day03:注意事项、this关键字、构造器、JavaBean、String、ArrayList

OOP的注意事项 类名要跟class文件名一致&#xff08;一个class可以有多个类&#xff0c;但只有一个public&#xff0c;且与文件名一致&#xff09;&#xff0c;命名介意大驼峰&#xff1b;如果某个对象没有变量指向他&#xff0c;就成垃圾对象了&#xff08;空指针&#xff09…...

【从0到1设计一个网关】性能优化---缓存

文章目录 为什么要用缓存?Caffeine Cache使用Caffeine效果演示为什么要用缓存? 首先先了解一下为什么在网关中我们需要用到缓存。 我们可以从如下几点来入手这个问题: 处理大规模流量: 网关是系统的入口,需要处理大规模的请求流量。高性能的网关能够快速而有效地处理大量…...

Typescript -尚硅谷

基础 1.ts是以js为基础构建的语言&#xff0c;是一个js的超集(对js进行了扩展)&#xff1b; 2.ts(type)最主要的功能是在js的基础上引入了类型的概念; Js的类型是只针对于值而言&#xff0c;ts的类型是针对于变量而言 Ts可以被编译成任意版本的js&#xff0c;从而进一步解决了…...

以 Kubernetes 原生方式实现多集群告警

作者&#xff1a;向军涛、雷万钧 来源&#xff1a;2023 上海 KubeCon 分享 可观测性来源 在 Kubernetes 集群上&#xff0c;各个维度的可观测性数据&#xff0c;可以让我们及时了解集群上应用的状态&#xff0c;以及集群本身的状态。 Metrics 指标&#xff1a;监控对象状态的量…...

2023年A股借壳上市研究报告

第一章 借壳上市概况 1.1 定义 借壳上市作为一种独特的资本市场操作手法&#xff0c;历来是企业拓展融资渠道和实现市场战略目标的重要途径。具体来说&#xff0c;借壳上市可分为狭义与广义两种模式。在狭义的定义下&#xff0c;借壳上市是指一家已上市的公司的控股母公司&am…...

【TiDB】TiDB CLuster部署

目录 0 大纲 一 集群部署工具TiUP简介 1 TiUP 简介 2 TiUP使用 3 TiUP使用举例 二 TiDB Cluster安装配置需求 1 生产环境硬件需求 2 操作系统需求 三 TIDB部署 1 软硬件需求以及前置检查​编辑 2 安装TiUP 组件 ​3 集群拓扑文件 4 执行部署命令 &#xff08;1&…...

odoo16 库存初始化 excel导入问题

最近在为一家公司实施odoo时&#xff0c;发现库存模块实施过程中按用户实际&#xff0c;产品初始化就是个问题。下面一一记录下 一个新公司&#xff0c;产品都有上百种&#xff0c;甚致几千种&#xff0c;如何把现有产品数据录入系统就是个不小的活。odoo16是有导入导出功能不…...

分享 种 .NET 桌面应用程序自动更新解决方案侣

一、Actor 模型&#xff1a;不是并发技巧&#xff0c;而是领域单元 Actor 模型的本质是&#xff1a; Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是&#xff1a; 如何在不共享状…...

手把手教你:在Ubuntu 22.04上从源码编译安装GMP库(解决NTL依赖)

在Ubuntu 22.04上从源码构建GMP库&#xff1a;解决数学计算依赖的完整指南 当你在Linux环境下开发需要高性能数学运算的应用时&#xff0c;GMP&#xff08;GNU Multiple Precision Arithmetic Library&#xff09;往往是绕不开的基础设施。这个开源库为任意精度数学运算提供了…...

中文语料分词+生成词表+词频排序

缘起 近日批改学生毕业论文&#xff0c;有篇初稿的话题是研究《红楼梦》文化负载词的汉英翻译&#xff0c;其研究方法一节有以下表述&#xff1a; This study adopts a random sampling method. Representative culture-loaded vocabulary is selected from the first 12 chap…...

ChanlunX缠论插件:3分钟掌握专业级K线分析,告别复杂缠论学习曲线!

ChanlunX缠论插件&#xff1a;3分钟掌握专业级K线分析&#xff0c;告别复杂缠论学习曲线&#xff01; 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析头疼吗&#xff1f;ChanlunX缠论…...

HunyuanVideo-Foley效果展示:AI生成气候变迁声音档案(冰川消融/森林火灾)

HunyuanVideo-Foley效果展示&#xff1a;AI生成气候变迁声音档案&#xff08;冰川消融/森林火灾&#xff09; 1. 技术背景与镜像介绍 HunyuanVideo-Foley是一款专注于视频生成与音效合成的AI模型&#xff0c;其私有部署镜像针对RTX 4090D 24GB显存进行了深度优化。这个镜像开…...

RAG 还是 Lucene:私有化部署客服系统的 AI 知识库架构选型郎

在之前的文章中&#xff0c;我们花了大量的篇幅&#xff0c;从记录后端pod真实ip开始说起&#xff0c;然后引入envoy&#xff0c;再解决了各种各样的需求&#xff1a;配置自动重载、流量劫持、sidecar自动注入&#xff0c;到envoy的各种能力&#xff1a;熔断、流控、分流、透明…...

Seedream 5.0图像生成技术与提示工程

如何提示Seedream 5.0 发布于2026年2月24日 by shridharathi 在某平台上尝试Seedream 5.0 某机构的Seedream系列一直在快速发展。投入大量时间对其进行提示测试&#xff0c;以下是发现的结果。 美学 在深入细节之前&#xff0c;先讨论图像的实际观感。Seedream 5.0能生成真正优…...

WeChatExporter:解锁iOS微信聊天记录的数字记忆宝库

WeChatExporter&#xff1a;解锁iOS微信聊天记录的数字记忆宝库 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因误删微信对话而懊悔不已&#xff1f;是否担心手…...

LaTeX文档编写的AI助手:集成Qwen3-0.6B-FP8自动生成与校对技术文档

LaTeX文档编写的AI助手&#xff1a;集成Qwen3-0.6B-FP8自动生成与校对技术文档 写技术文档&#xff0c;尤其是用LaTeX来写&#xff0c;对很多人来说是个又爱又恨的活儿。爱的是它排版精美&#xff0c;学术范儿十足&#xff1b;恨的是那些复杂的语法、繁琐的公式代码&#xff0…...

xManager:免费解锁Spotify高级功能的完整使用指南

xManager&#xff1a;免费解锁Spotify高级功能的完整使用指南 【免费下载链接】xManager Ad-Free, New Features & Freedom 项目地址: https://gitcode.com/GitHub_Trending/xm/xManager xManager是一款专为音乐流媒体爱好者设计的安卓应用管理工具&#xff0c;它让…...