辞职许久了,思考了很久,觉得自己是不是不太适合当程序员了?最近看算法,刷 leetcode,简单的基本都会(相信在做的各位也没几个不会的),遇到最优解的,动态规划的,基本一个都不会了(哭。。。)
然后昨天今天特意看了下 01 背包问题,我发现我居然看不懂了。。。
今天看到一个简单的零钱兑换问题。只会用回溯法。。。我是不是没救了。。。
附代码
private int change0(int[] arr, int target) {
Arrays.sort(arr);
ArrayDeque<Integer> stack = new ArrayDeque<>();
int index = arr.length-1;
while (!stack.isEmpty() || index >= 0) {
if (index < 0) {
if (stack.isEmpty()) return -1; //找不到
int last = stack.pop();
target += arr[last];
index = last-1;
continue;
}
if (arr[index] == target) {
return stack.size()+1;
} else if (arr[index] > target) {
index--;
} else {
target -= arr[index];
stack.push(index);
}
}
return -1;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.