参数引入和全局变量引入实现-目标和

news2024/11/24 17:45:56

LCR 102. 目标和 - 力扣(LeetCode)

分析题意,画出决策树,其他的思路都跟前面讲过的类似: 

 

全局变量引入实现: 

全局变量的引入,需要手动处理回溯;

class Solution {
    int ret;    // 最终结果
    int sum;    

    public int findTargetSumWays(int[] nums, int target) {
        dfs(nums,target,0);
        return ret;
    }

    // pos 表示当前针对 nums[pos] 进行操作
    public void dfs(int[] nums,int target,int pos){
        // 递归出口
        if(pos == nums.length){
            if(sum == target){
                ret++;
            }
            return;
        }

        // 加
        sum = sum + nums[pos];
        dfs(nums,target,pos+1);
        sum = sum - nums[pos];        // 回溯
    
        // 减
        sum = sum - nums[pos];
        dfs(nums,target,pos+1);
        sum = sum + nums[pos];        // 回溯

    }
}

参数引入实现:

参数引入,回溯是默认实现的,sum值在每一层都是不变化的;

class Solution {
    int ret;    // 最终结果

    public int findTargetSumWays(int[] nums, int target) {
        dfs(nums,target,0,0);
        return ret;
    }

    // pos 表示当前针对 nums[pos] 进行操作
    public void dfs(int[] nums,int target,int pos,int sum){
        // 递归出口
        if(pos == nums.length){
            if(sum == target){
                ret++;
            }
            return;
        }

        // 加
        dfs(nums,target,pos+1,sum+nums[pos]);


        // 减
        dfs(nums,target,pos+1,sum-nums[pos]);

    }
}

(当全局变量是一个数组类型,比如int[],这种就适合全局变量引入,比如全排列那种类型的题目;而如果全局变量是一个整形类型或者一个单独的类型的时候,则考虑参数引入更合适一些,不需要手动去处理回溯)

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

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

相关文章

群晖Synology Drive服务搭建结合内网穿透实现云同步Obsidian笔记文件夹

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-ebec69DBjtGk7apF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Linux:进度条的实现

使用工具的简单介绍: 在创建进度条之前,首先要明白两个工具,fflush 和 \r 。 \r 回车键的功能其实是两个,一个是换行,一个是回车。所谓换行就是将光标从这一行变到下一行中,且是垂直下落&#xff0c…

【详识JAVA语言】类和对象

面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来…

leetcode移除元素

注意,在本题中,是对原数组进行操作,需要原地删除指定元素,所以我们可以采用快慢指针来操作。 顾名思义,快慢指针是有两个指针,一直快指针,一个慢指针。在本题中,快慢指针起点都是0&a…

MATLAB:Image Processing Toolbox工具箱入门实战

目录 1.基本图像导入、处理和导出 2.实战项目一:利用imfindcircles()函数检测和测量图像中的圆形目标 1.基本图像导入、处理和导出 Basic Image Import, Processing, and Export- MATLAB & SimulinkThis example shows how to read an image into the worksp…

在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新

文章目录 一、需求背景二、token刷新的方案1、根据过期时间重新获取2、定时刷新token接口3、使用了RefreshToken 三、关于RefreshToken四、Refresh Token的优点五、Refresh Token的工作原理六、Refresh Token的使用流程七、Refresh Token的实现步骤1、登录成功后保存AccessToke…

Studio One 6永久激活版 附完整图文安装破解教程

Studio One 6是一款功能强大的音乐制作和录音软件,专为Mac操作系统设计。它提供了多轨录音和混音、MIDI音乐制作、实时效果和处理、VST插件支持以及高级编辑和编排等丰富的功能。无论是专业音乐制作人还是音乐爱好者,都可以使用Studio One 6来创建和编辑…

爬虫案例一

首先我举一个案例比如豆瓣电影排行榜 (douban.com)这个电影,首先我们进去检查源代码 说明源代码有,说明是服务器渲染,可以直接那html 但是返回的结果是空,所以我们需要在头里面加上User-Agent 然后可以看到有返回的结果&#xff0…

网络学习:MPLS标签与标签分配协议—LDP

目录 前言: 一、MPLS标签 1、定义: 2、标签结构: 3、标签识别: 二、标签分配协议---LDP(Lable Distribution Protocol) 1、定义: 2、标签分配协议的种类: 3、LDP消息类型 …

C/C++平方和问题(蓝桥杯)

题目描述: 小明对数位中含有2、0、1、9 的数字很感兴趣,在1 到40 中这样的数包 括1、2、9、10 至32、39 和40,共28 个,他们的和是574,平方和是14362。 注意,平方和是指将每个数分别平方后求和。 请问&#…

从零开始学习Netty - 学习笔记 -Netty入门【协议设计和解析】

2.协议设计和解析 协议 在计算机中,协议是指一组规则和约定,用于在不同的计算机系统之间进行通信和数据交换。计算机协议定义了数据传输的格式、顺序、错误检测和纠正方法,以及参与通信的各个实体的角色和责任。计算机协议可以在各种不同的层…

第四十九回 吴学究双掌连环计 宋公明三打祝家庄-Python与HTTP服务交互

吴用请戴宗从梁山请来铁面孔目裴宣、圣手书生萧让、通臂猿侯健、玉臂匠金大坚来帮忙。又告诫扈家庄的扈成,打起来不要去帮祝家庄。 孙立把旗号改成“登州兵马提辖孙立”,来祝家庄找峦廷玉,被热情接待。 第三天,宋江派小李广花荣…

001 GUI编程简介

一个知识该怎么学? 这是什么该怎么玩能干什么 图形化程序应该包含并不限于如下组件 窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘事件 GUI介绍 核心技术:Swing与AWT 不流行原因:界面不美观、需要JRE环境 仍然学习的原因&#xf…

备战蓝桥杯---树形DP基础3

上一次我们讲了二叉苹果树,现在我们加一点难度,从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP,我们其实可以发现,我们可以用类似背包的思想求解,这就是所谓的树上背包。 我们先加进第一个儿子来…

骨传导耳机哪个牌子好?六大选购窍门,帮你甩掉坑货!

很多用户对骨传导耳机的理解存在偏差,认为只要选择价格贵的、热度高的产品就能万事大吉,而实际却不是如此,要知道,随着骨传导耳机逐渐成为热门款式,目前的市场上的骨传导耳机品牌也变得五花八门,这其中就包…

springboot230基于Spring Boot在线远程考试系统的设计与实现

在线远程考试系统设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到…

数据库学习案例20240304-mysql数据库案例总结(碎片,统计信息)

1 表中的碎片 在InnoDB中删除行的时候,这些行只是被标记为“已删除”,而不是真正从物理存储上进行了删除,因而存储空间也没有真正被释放回收。InnoDB的Purge线程会异步地来清理这些没用的索引键和行。但是依然没有把这些释放出来的空间还给操…

ES核心概念(45-48)(56-62)(101-103)

ES集群 ES集群(Cluster)包含多个节点(服务器),整体提供服务 核心概念 索引Index:类似于mysql中的表 映射Mapping:数据的结构信息 文档:相当于表中的一条记录 分片: 将数据分成多片…

4、pod运维replicationCtroller、replicaSet、DeamonSet、Job、Cronjob

1、kubenetes 会自动重新运行失败的pod应用 pod运行失败,会自动重启,但是节点失败,pod会被移除, 除非配置了relicationController来管理资源 2、保持pod的健康存活 配置探针,发送http请求 3、查看前一个pod的运行日…

字节扣子 Bot | Bot 介绍

一、什么是 coze ? Coze 是一个由字节跳动开发的一个用于开发新一代 AI Chat Bot 的应用编辑平台。在这个平台上,即使是没有编程基础的小白,也能快速创建各种各样的聊天机器人,并将创建的机器人发布到多个社交平台和通讯软件上。 …