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

网站首页的logo这么修改如何在手机上开自己的网站

网站首页的logo这么修改,如何在手机上开自己的网站,社交网站怎么做,竞价推广专员题目 给你一个非负整数数组 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.zhongyajixie.com/news/578.html

相关文章:

  • 学校网站建设及管理制度拼多多搜索关键词排名
  • 淮安网站建设哪家好全球外贸b2b网站
  • 做信息分类网站难吗免费cms建站系统
  • 网站建设信息平台最新国际新闻10条
  • 网站建设中 页面企业站seo外包
  • 英文专业的网站设计企业网络营销顾问
  • 网站建设预算申请cnzz数据统计
  • 烟台做网站公司哪家好nba最新交易消息
  • 重庆制作网站培训市场调研的重要性
  • 网站运维工作内容ueeshop建站费用
  • 哈尔滨营销型网站建设公司友情链接站长平台
  • 中山网站建设哪家好百度网页版电脑版
  • 策划公司口号广州seo推广培训
  • 安徽网站建设维护银徽seo
  • 安装php网站广州企业网站推广
  • 手机网站建设怎样建站模板
  • 做网站如何选主机西安seo培训机构
  • 做网站是怎么收费的是按点击率青岛网络优化费用
  • 如何利用ps做网站网络营销渠道有哪几种
  • 如何制作公司网站免费ip域名查询
  • 音频文件放到网站空间里生成链接怎么做站长之家域名查询官网
  • 泉州网站建设电话淘宝运营培训多少钱
  • 政府网站建设调查问卷目前推广软件
  • 网站文字循环滚动代码百度网站登录
  • 中国建设银行网上银行网站特点怎么制作网站二维码
  • 英语网站推广策划书深度优化
  • 服装网络营销方案策划seo优化软件
  • wordpress 基于 网店seo工作是什么意思
  • 做神马网站优化快速排推广渠道有哪些
  • 织梦手机网站教程视频教程数据统计网站有哪些