leetcode-top100-liked-questions-medium
1、Target Sum
You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symbols +
and -
. For each integer, you should choose one from +
and -
as its new symbol.
Find out how many ways to assign symbols to make sum of integers equal to target S.
Example 1:
Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5 Explanation: -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 There are 5 ways to assign symbols to make the sum of nums be target 3.
Note:
- The length of the given array is positive and will not exceed 20.
- The sum of elements in the given array will not exceed 1000.
- Your output answer is guaranteed to be fitted in a 32-bit integer.
题意解析:
给定一个数组,对这个数组的每一个元素乘上1或者-1,找到一个组合使得全部数值的和为target
这道题最优是用动态规划的思想来做:
假设a=[1,1,1,1,1]
从左到右遍历这个数组,一开始的时候,和为0,遍历到第一个数的时候,和的组合是{-1,1},遍历到第二个数时,在前面的和的基础上,加上1或者减去1,那么和的组合是{-2,0,2},以此类推。。。当遍历完这个数组时,和的组合里面包含了target,则说明有这样的组合能够得到target。
而问题要求得到的是有几种组合。
2、Subarray Sum Equals K
寻找子数组和为k的组合数量
Example 1:
Input:nums = [1,1,1], k = 2 Output: 2
Note:
- The length of the array is in range [1, 20,000].
- The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].