zoukankan      html  css  js  c++  java
  • 【力扣】494. 目标和

    给你一个整数数组 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 <= 100

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/target-sum
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
    
        int count = 0;
    
        public int findTargetSumWays(int[] nums, int target) {
            
            backtrack(nums,target,0,0);
            return count;
            
        }
    
        //这是一个回溯算法
        public void backtrack(int[] nums, int target, int index, int sum) {
            if(index == nums.length){
                if(sum == target){
                    count ++;
                }
            } else {
                backtrack(nums,target,index+1,sum + nums[index]);
                backtrack(nums,target,index+1,sum - nums[index]);
            }
        }
    }
    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    二维数组的查找问题
    将字符串编码成数值,求数值最大和问题(今日头条笔试题)
    链表的倒序打印
    求方程的近似解
    多边形构成问题(今日头条笔试题)
    各种语言数据类型大小
    luoguP1551 亲戚
    Codeforces 764 A-B
    Mixing Chemicals
    Day 8 of JZJX
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/14857778.html
Copyright © 2011-2022 走看看