参考: https://mp.weixin.qq.com/s?__biz=MzA5MzE4MjgyMw==&mid=2649455651&idx=1&sn=2cfd46678f2a43aaf9f888aa58c8c080&chksm=887e122bbf099b3d49a3ea399d3c01f8967a0bbe2462fa2c28fee42daadb06b6678668de8b8b&mpshare=1&scene=1&srcid=0317hOi4csT3vilJsndabLdI&key=e10ebddae0f43000ef8f862d52c5d4a551cbf0cd7e5d2d2c45986642dd84e9db70aada9245d7c6c7d4aab4fbfc6e9710b4f3e74b21aea5aac00952f258131a659a0d38f9f4a5472b1722afa0223e044d&ascene=0&uin=MTUyMzg3NjAwMA%3D%3D&devicetype=iMac+MacBookAir7%2C1+OSX+OSX+10.12.3+build(16D32)&version=12020010&nettype=WIFI&fontScale=100&pass_ticket=0AiIToHJN8yqpuqRAsA5PaaQMJr8KtvlnZ2EqkX0zx%2BEZweRvHKyF%2ByjmycpUbVn
好奇怪。。。这个真的是我写的吗。。。为什么一点印象没有。
这里分析一下Run Time. 为什么说复杂度达到了O(N^M). 因为最差情况,target每次只减去1. 对于一个case就要减M次。所以= n*n*n*n...n=n^m
最优解: DP:
假设我们要求target, 先想一下target的上一步。 比如说target -10. Target Sum =9 只要再有一个1就可以到10.
Target sum 8再有一个2就可以到10. 所以我们就是遍历所有的能够取array里一个元素到target的情况。