关注
// 测试链接 : https://leetcode.com/problems/target-sum/
// 优化点一 :
// 你可以认为arr中都是非负数
// 因为即便是arr中有负数,比如[3,-4,2]
// 因为你能在每个数前面用+或者-号
// 所以[3,-4,2]其实和[3,4,2]达成一样的效果
// 那么我们就全把arr变成非负数,不会影响结果的
// 优化点二 :
// 如果arr都是非负数,并且所有数的累加和是sum
// 那么如果target<sum,很明显没有任何方法可以达到target,可以直接返回0
// 优化点三 :
// arr内部的数组,不管怎么+和-,最终的结果都一定不会改变奇偶性
// 所以,如果所有数的累加和是sum,
// 并且与target的奇偶性不一样,没有任何方法可以达到target,可以直接返回0
// 优化点四 :
// 比如说给定一个数组, arr = [1, 2, 3, 4, 5] 并且 target = 3
// 其中一个方案是 : +1 -2 +3 -4 +5 = 3
// 该方案中取了正的集合为P = {1,3,5}
// 该方案中取了负的集合为N = {2,4}
// 所以任何一种方案,都一定有 sum(P) - sum(N) = target
// 现在我们来处理一下这个等式,把左右两边都加上sum(P) + sum(N),那么就会变成如下:
// sum(P) - sum(N) + sum(P) + sum(N) = target + sum(P) + sum(N)
// 2 * sum(P) = target + 数组所有数的累加和
// sum(P) = (target + 数组所有数的累加和) / 2
// 也就是说,任何一个集合,只要累加和是(target + 数组所有数的累加和) / 2
// 那么就一定对应一种target的方式
// 也就是说,比如非负数组arr,target = 7, 而所有数累加和是11
// 求有多少方法组成7,其实就是求有多少种达到累加和(7+11)/2=9的方法
// 优化点五 :
// 二维动态规划的空间压缩技巧
查看原帖
5 2
相关推荐
04-02 17:17
南阳理工学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如何成为1个AI工程师? #
6895次浏览 316人参与
# 秋招拿一个offer可以躺平吗 #
277930次浏览 1412人参与
# 26届春招投递记录 #
41317次浏览 353人参与
# 一人分享一个skill #
34976次浏览 317人参与
# 27届实习投递记录 #
128755次浏览 1442人参与
# 机械人求职现状 #
44169次浏览 329人参与
# 你觉得第一学历对求职有影响吗? #
277116次浏览 1496人参与
# 我在大厂见过的最低学历 #
6834次浏览 70人参与
# 产品2023笔面经 #
89349次浏览 472人参与
# 第一次找实习,我建议__ #
87624次浏览 875人参与
# 秋招白月光 #
819661次浏览 5695人参与
# 虹软科技求职进展汇总 #
18598次浏览 141人参与
# 想给25届机械人的秋招建议 #
54425次浏览 264人参与
# 上班苦还是上学苦呢? #
350767次浏览 2088人参与
# 给26届的秋招建议 #
391431次浏览 4407人参与
# 要毕业了,再不说就来不及了 #
11742次浏览 173人参与
# HR面都在聊什么? #
48832次浏览 333人参与
# 机械人你觉得今年行情怎么样? #
9934次浏览 100人参与
# 找工作中的意难平 #
1106546次浏览 6532人参与
# 运营来爆料 #
106120次浏览 519人参与