【发布时间】:2017-02-14 17:16:40
【问题描述】:
我试图通过解决 Codality 问题来提高我的技能。我到达了这个:https://codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/
我其实理论上理解解决方案:
- 在数组上使用 Kadane 算法并将总和存储在每个索引处。
- 反转数组并执行相同操作。
- 通过一次循环遍历两个结果集,找到两者之和最大的点。
- 最大值是最大双切片。
我的问题不在于如何解决问题。我的问题是关于人们如何想象这将是解决这个问题的方式。至少需要使用 3 个不同的概念:
如果数组中的所有元素都是正数或负数,则与数组中存在正数和负数元素时的情况不同。
Kadane 算法
向前和向后遍历数组。
尽管如此,Codality 已将此问题标记为“无痛”。
我的问题是我错过了什么吗?在不了解其中一些概念的情况下,我似乎很难解决这个问题。
有没有一种技术可以让我从头开始和非常基本的概念,然后逐步达到解决这个问题所需的概念。还是说我在开始问题之前就应该知道这些概念?
我该如何准备自己以解决将来不知道所需概念的此类问题?
【问题讨论】:
标签: arrays algorithm kadanes-algorithm