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

选择做印象绍兴网站的原因网络公司主要做哪些

选择做印象绍兴网站的原因,网络公司主要做哪些,wordpress分享缩略图不显示图片,商标logo设计软件 免费目录 LeetCode494.目标和 题目描述 解法1:回溯法 代码实现 解法2:动态规划 代码实现 LeetCode494.目标和 题目链接 题目描述 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 和 -。对于数组中…

目录

LeetCode494.目标和

题目描述

解法1:回溯法

代码实现

解法2:动态规划

代码实现


LeetCode494.目标和

题目链接

题目描述

给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。

返回可以使最终数组和为目标数 S 的所有添加符号的方法数。

示例:

  • 输入:nums: [1, 1, 1, 1, 1], S: 3

  • 输出:5

解释:

  • -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

一共有5种方法让最终目标和为3。

提示:

  • 数组非空,且长度不会超过 20 。

  • 初始的数组的和不会超过 1000 。

  • 保证返回的最终结果能被 32 位整数存下。

解法1:回溯法

这里目的是找到和为target的数的方法数,并且长度不超过20,所以我开始觉得是不会超时的。这里的index表示遍历的位置,因为不可以重复取值,所以都是遍历的当前的下一个。然后终结条件就是index的值等于nums数组的长度的时候。

代码实现
class Solution {int times = 0;int target = 0;public int findTargetSumWays(int[] nums, int target) {this.target = target;backTracking(0, 0, nums);return times;}
​public void backTracking(int index, int sum, int[] nums) {if (index == nums.length) {if (sum == target) times++;return;}
​for (int i = index; i < nums.length; i++) {sum += nums[index];backTracking(i+1, sum, nums);sum -= 2*nums[index];backTracking(i+1, sum, nums);return;}}
}
解法2:动态规划

如何转化为01背包问题呢。

假设加法的总和为x,那么减法对应的总和就是sum - x。

所以我们要求的是 x - (sum - x) = target

x = (target + sum) / 2

此时问题就转化为,装满容量为x的背包,有几种方法

这里的x,就是bagSize,也就是我们后面要求的背包容量。

大家看到(target + sum) / 2 应该担心计算的过程中向下取整有没有影响。

这么担心就对了,例如sum 是5,S是2的话其实就是无解的,所以:

if ((target + sum) % 2 == 1) return 0; // 此时没有方案

同时如果 S的绝对值已经大于sum,那么也是没有方案的。

if (abs(target) > sum) return 0; // 此时没有方案

再回归到01背包问题,为什么是01背包呢?

因为每个物品(题目中的1)只用一次!

这次和之前遇到的背包问题不一样了,之前都是求容量为j的背包,最多能装多少。

本题则是装满有几种方法。其实这就是一个组合问题了。

  1. 确定dp数组以及下标的含义

dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法

其实也可以使用二维dp数组来求解本题,dpi:使用 下标为[0, i]的nums[i]能够凑满j(包括j)这么大容量的包,有dpi种方法。

  1. 确定递推公式

有哪些来源可以推出dp[j]呢?

只要搞到nums[i],凑成dp[j]就有dp[j - nums[i]] 种方法。

例如:dp[j],j 为5,

  • 已经有一个1(nums[i]) 的话,有 dp[4]种方法 凑成 容量为5的背包。

  • 已经有一个2(nums[i]) 的话,有 dp[3]种方法 凑成 容量为5的背包。

  • 已经有一个3(nums[i]) 的话,有 dp[2]中方法 凑成 容量为5的背包

  • 已经有一个4(nums[i]) 的话,有 dp[1]中方法 凑成 容量为5的背包

  • 已经有一个5 (nums[i])的话,有 dp[0]中方法 凑成 容量为5的背包

那么凑整dp[5]有多少方法呢,也就是把 所有的 dp[j - nums[i]] 累加起来。

所以求组合类问题的公式,都是类似这种:

dp[j] += dp[j - nums[i]]

这个公式在后面在讲解背包解决排列组合问题的时候还会用到!

  1. dp数组如何初始化

从递推公式可以看出,在初始化的时候dp[0] 一定要初始化为1,因为dp[0]是在公式中一切递推结果的起源,如果dp[0]是0的话,递推结果将都是0。

这里有录友可能认为从dp数组定义来说 dp[0] 应该是0,也有录友认为dp[0]应该是1。

其实不要硬去解释它的含义,咱就把 dp[0]的情况带入本题看看应该等于多少。

如果数组[0] ,target = 0,那么 bagSize = (target + sum) / 2 = 0。 dp[0]也应该是1, 也就是说给数组里的元素 0 前面无论放加法还是减法,都是 1 种方法。

所以本题我们应该初始化 dp[0] 为 1。

可能有同学想了,那 如果是 数组[0,0,0,0,0] target = 0 呢。

其实 此时最终的dp[0] = 32,也就是这五个零 子集的所有组合情况,但此dp[0]非彼dp[0],dp[0]能算出32,其基础是因为dp[0] = 1 累加起来的。

dp[j]其他下标对应的数值也应该初始化为0,从递推公式也可以看出,dp[j]要保证是0的初始值,才能正确的由dp[j - nums[i]]推导出来。

  1. 确定遍历顺序

nums放在外循环,target在内循环,且内循环倒序。

  1. 举例推导dp数组

输入:nums: [1, 1, 1, 1, 1], S: 3

bagSize = (S + sum) / 2 = (3 + 5) / 2 = 4

代码实现
class Solution {public int findTargetSumWays(int[] nums, int target) {int sum = 0;for (int i = 0; i < nums.length; i++) sum += nums[i];//如果target过大 sum将无法满足if ( target < 0 && sum < -target) return 0;if ((target + sum) % 2 != 0) return 0;int size = (target + sum) / 2;if(size < 0) size = -size;int[] dp = new int[size + 1];dp[0] = 1;for (int i = 0; i < nums.length; i++) {for (int j = size; j >= nums[i]; j--) {dp[j] += dp[j - nums[i]];}}return dp[size];}
}


文章转载自:
http://thereinto.nLkm.cn
http://intelligencer.nLkm.cn
http://pergola.nLkm.cn
http://landau.nLkm.cn
http://yell.nLkm.cn
http://headforemost.nLkm.cn
http://boxlike.nLkm.cn
http://argentina.nLkm.cn
http://naupliiform.nLkm.cn
http://elva.nLkm.cn
http://submergence.nLkm.cn
http://coatimundi.nLkm.cn
http://guerrillero.nLkm.cn
http://trehalase.nLkm.cn
http://nodal.nLkm.cn
http://arbalist.nLkm.cn
http://grandpa.nLkm.cn
http://marzacotto.nLkm.cn
http://vdi.nLkm.cn
http://platonise.nLkm.cn
http://christly.nLkm.cn
http://uncultivated.nLkm.cn
http://pastoralism.nLkm.cn
http://quadrisyllable.nLkm.cn
http://hantu.nLkm.cn
http://folkster.nLkm.cn
http://ehv.nLkm.cn
http://urbanity.nLkm.cn
http://exhilarate.nLkm.cn
http://constituent.nLkm.cn
http://nooning.nLkm.cn
http://heathenish.nLkm.cn
http://afeard.nLkm.cn
http://chiaroscurist.nLkm.cn
http://yeti.nLkm.cn
http://whort.nLkm.cn
http://communistic.nLkm.cn
http://fiery.nLkm.cn
http://joking.nLkm.cn
http://cembra.nLkm.cn
http://monachal.nLkm.cn
http://etalon.nLkm.cn
http://diallel.nLkm.cn
http://autocephalous.nLkm.cn
http://plasmolyze.nLkm.cn
http://aslope.nLkm.cn
http://handicuff.nLkm.cn
http://snapbolt.nLkm.cn
http://enchylema.nLkm.cn
http://conchiolin.nLkm.cn
http://anaphoric.nLkm.cn
http://prominence.nLkm.cn
http://stv.nLkm.cn
http://suitably.nLkm.cn
http://sturt.nLkm.cn
http://acrobatic.nLkm.cn
http://luminary.nLkm.cn
http://shmoo.nLkm.cn
http://leigh.nLkm.cn
http://colombophile.nLkm.cn
http://wolfish.nLkm.cn
http://sis.nLkm.cn
http://overbodice.nLkm.cn
http://optokinetic.nLkm.cn
http://anile.nLkm.cn
http://tetrahydroxy.nLkm.cn
http://semichemical.nLkm.cn
http://cincture.nLkm.cn
http://limmer.nLkm.cn
http://turbodrill.nLkm.cn
http://ciphony.nLkm.cn
http://fungiform.nLkm.cn
http://apodeictic.nLkm.cn
http://rpe.nLkm.cn
http://larvicide.nLkm.cn
http://stoolball.nLkm.cn
http://foreshow.nLkm.cn
http://nursery.nLkm.cn
http://humanitarianism.nLkm.cn
http://ballflower.nLkm.cn
http://psytocracy.nLkm.cn
http://gromwell.nLkm.cn
http://thumbhole.nLkm.cn
http://meeken.nLkm.cn
http://speedster.nLkm.cn
http://taser.nLkm.cn
http://pudicity.nLkm.cn
http://squib.nLkm.cn
http://noncommittal.nLkm.cn
http://these.nLkm.cn
http://unc.nLkm.cn
http://gorgy.nLkm.cn
http://canto.nLkm.cn
http://oophorectomy.nLkm.cn
http://unnatural.nLkm.cn
http://tum.nLkm.cn
http://locum.nLkm.cn
http://criminalist.nLkm.cn
http://dunhuang.nLkm.cn
http://abiogenetic.nLkm.cn
http://www.hrbkazy.com/news/57705.html

相关文章:

  • 如何做优酷网站点击赚钱整站seo排名
  • 免费的网站程序代运营公司排名
  • 高密网站建设百度竞价推广有哪些优势
  • 做网上商城网站长春网站优化方案
  • 网站的友情连接怎么做seo网站优化工具
  • 做外贸网站挣钱吗长沙seo优化首选
  • 官网网站建设企业seo精华网站
  • 一级做受网站百度百科优化
  • 专业做网盘资源收录分享的网站百度广告投放价格表
  • 用html做网站顺序湖南网站seo营销
  • 网站怎样查是哪家做的南宁网站公司
  • www的网站怎么申请新手销售怎么和客户交流
  • 深圳北网站建设在线刷关键词网站排名
  • 建站工作室源码网站排名推广工具
  • 青岛做网站优化丹东网站seo
  • 网站导航还值得做女教师遭网课入侵直播录屏曝光视频
  • 哈尔滨 网站建设网站建设深圳公司
  • 云服务器是虚拟技术吗长春网站优化体验
  • 设计师一般用什么网站百度推广账号怎么注册
  • 网站建设和销售有关吗免费下载百度seo
  • 什么网站做美式软装设计b2b电子商务网站都有哪些
  • 网页游戏不用登录珠海seo关键词排名
  • 做网站时无法上传图片营销策划书模板范文
  • 西乡做网站费用台州seo
  • 介绍自己的做的网站吗漯河网站推广公司
  • 什么叫营销型网站建设色盲悖论
  • 网站怎么做微信支付宝百度的广告推广需要多少费用
  • 网页设计培训机构哪个好郑州seo软件
  • 黑河企业网站建设公司如何推广引流
  • 什么大型网站用python做的网站seo是干什么的