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

自己建的网站打开的特别慢近期的重大新闻

自己建的网站打开的特别慢,近期的重大新闻,嵌入式软件开发怎么学,动易建网站题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - &#x…

题目

给你一个非负整数数组 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

解答

源代码

class Solution {public int findTargetSumWays(int[] nums, int target) {int sum = 0;for (int num : nums) {sum += num;}if (sum - target < 0 || (sum - target) % 2 == 1) {return 0;}int len = nums.length, neg = (sum - target) / 2;int[][] dp = new int[len + 1][neg + 1];dp[0][0] = 1;for (int i = 1; i < len + 1; i++) {int num = nums[i - 1];for (int j = 0; j < neg + 1; j++) {dp[i][j] = dp[i - 1][j];if (j >= num) {dp[i][j] += dp[i - 1][j - num];}}}return dp[len][neg];}
}

总结

记数组的元素和为 sum,添加 - 号的元素之和为 neg,则其余添加 + 的元素之和为 sum−neg,得到的表达式的结果为:

(sum − neg) − neg = sum − 2 * neg = target  即 neg = (sum − target) / 2

由于数组 nums 中的元素都是非负整数,neg 也必须是非负整数,所以上式成立的前提是 sum − target 是非负偶数。若不符合该条件可直接返回 0。

若上式成立,问题转化成在数组 nums 中选取若干元素,使得这些元素之和等于 neg,计算选取元素的方案数。我们可以使用动态规划的方法求解。

定义二维数组 dp,其中 dp[i][j] 表示在数组 nums 的前 i 个数中选取元素,使得这些元素之和等于 j 的方案数。假设数组 nums 的长度为 n,则最终答案为 dp[n][neg]。

当没有任何元素可以选取时,元素和只能是 0,对应的方案数是 1,因此动态规划的边界条件是:

当j = 0时,dp[0][j] = 1;当j > 0时,dp[0][j] = 0;

当 1 ≤ i ≤ n 时,对于数组 nums 中的第 i 个元素 num(i 的计数从 1 开始),遍历 0 ≤ j ≤ neg,计算 dp[i][j] 的值:

如果 j < num,则不能选 num,此时有 dp[i][j] = dp[i − 1][j];

如果 j ≥ num,则如果不选 num,方案数是 dp[i−1][j],如果选 num,方案数是 dp[i − 1][j − num],此时有 dp[i][j]=dp[i − 1][j] + dp[i − 1][j − num]。

因此状态转移如下:

当j < nums[i]时,dp[i][j] = dp[i−1][j];当j >= nums[i]时, dp[i][j] = dp[i - 1][j] + dp[i − 1][j − nums[i]]。

最终得到 dp[n][neg] 的值即为答案。

http://www.mmbaike.com/news/37224.html

相关文章:

  • 公司介绍模板ppt宁波专业seo外包
  • 最简单的手机网站制作图们网络推广
  • 网站日均ip过万怎么做自动友链网
  • web新闻网站开发seo诊断专家
  • b2b外贸网站开发网站建设推广优化
  • 网站怎么加入百度网盟seo技术培训泰州
  • 大庆网站优化seo搜索引擎官网
  • 网络绿化网站建设哪家专业什么是核心关键词
  • 网站建设的成本分析百度快速收录办法
  • 制作网站的软件网络营销推广方案3篇
  • 政府网站的构建与运作跨境电商有哪些平台
  • 北滘建网站设计模板网站
  • 寻找完善政府网站建设最近的电脑培训班在哪里
  • 代做课程设计的网站个人在线网站推广
  • 展厅设计参考图百度seo手机
  • 网站rss地址生成深圳网站建设 手机网站建设
  • 网站建设每年有维护费吗小视频网站哪个可以推广
  • 政府内网网站建设nba排名2021最新排名
  • p2p网站制作流程seo综合查询爱站
  • 怀柔做网站淘宝指数网站
  • 男人和女人做受吃母乳视频网站免费公司网站优化
  • 政务服务 网站 建设方案seo免费外链工具
  • 广州建网站白云区网站seo优化案例
  • 网站建设预付流程服装网络营销策划书
  • 烟台网站推广冬镜seo
  • 做网站用什么源码好今日头条(官方版本)
  • 石家庄做建站模板网站建设维护
  • 湖南长沙网站建设seo外链推广工具下载
  • o2o网站设计方案百度广告推广电话
  • 扬州网站建设近几天发生的新闻大事