我试着通过解决Codality问题来提高我的技能。我遇到了这个问题: https://codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/
我理论上了解解决方案:
1. 在数组上使用Kadane算法,并在每个索引处存储总和。 2. 反转数组并执行相同操作。 3. 通过循环遍历两个结果集中的一个来找到两者总和最大的点。 4. 最大值是最大双片段。
我的问题不是如何解决问题,而是如何想象这将是解决问题的方式。至少需要使用3个不同的概念:
1. 理解如果数组中的所有元素都是正数或负数,则与数组中有一些正数和负数的情况不同。 2. Kadane算法 3. 正向和反向遍历数组。
尽管如此,Codality将此问题标记为“轻松”。
我的问题是我错过了什么吗?似乎很难在不知道这些概念的情况下解决此问题。
是否有一种方法,可以从基础概念开始,并逐步掌握解决此问题所需的概念。还是说我需要在开始解决问题之前就知道这些概念?
如何准备自己以解决将来不知道所需概念的问题?
1. 在数组上使用Kadane算法,并在每个索引处存储总和。 2. 反转数组并执行相同操作。 3. 通过循环遍历两个结果集中的一个来找到两者总和最大的点。 4. 最大值是最大双片段。
我的问题不是如何解决问题,而是如何想象这将是解决问题的方式。至少需要使用3个不同的概念:
1. 理解如果数组中的所有元素都是正数或负数,则与数组中有一些正数和负数的情况不同。 2. Kadane算法 3. 正向和反向遍历数组。
尽管如此,Codality将此问题标记为“轻松”。
我的问题是我错过了什么吗?似乎很难在不知道这些概念的情况下解决此问题。
是否有一种方法,可以从基础概念开始,并逐步掌握解决此问题所需的概念。还是说我需要在开始解决问题之前就知道这些概念?
如何准备自己以解决将来不知道所需概念的问题?