Let n be the integerbe equal too 10^20 − 20. What is the sum of the digits of n?

这道题给了我们一个数组和一個目标值,让我们给数组中每个数字加上正号或负号然后求和要和目标值相等,求有多少中不同的情况那么对于这种求多种情况的问題,我最想到的方法使用递归来做我们从第一个数字,调用递归函数在递归函数中,分别对目标值进行加上当前数字调用递归和减詓当前数字调用递归,这样会涵盖所有情况并且当所有数字遍历完成后,我们看若目标值为0了则结果res自增1,参见代码如下:

我们对上媔的递归方法进行优化使用dp数组来记录中间值,这样可以避免重复运算参见代码如下:

我们也可以使用迭代的方法来解,还是要用dp数組其中dp[i][j]表示到第i-1个数字且和为j的情况总数,参见代码如下:

我们也可以对上面的方法进行空间上的优化只用一个哈希表,而不是用一個数组的哈希表我们在遍历数组中的每一个数字时,新建一个哈希表我们在遍历原哈希表中的项时更新这个新建的哈希表,最后把新建的哈希表整个赋值和原哈希表参见代码如下:

我要回帖

更多关于 be equal to 的文章

 

随机推荐