leetcode1027

最直接的思路是三层循环,但是会超时,代码如下:

 1 public class Solution
 2     {
 3         public int LongestArithSeqLength2(int[] A)
 4         {
 5             var maxLength = 2;
 6             var len = A.Count();
 7             for (var i = 0; i < len; i++)
 8             {
 9                 for (var j = i + 1; j < len; j++)
10                 {
11                     var curmax = 2;
12                     var target = A[i] - A[j];
13                     var next = A[j] - target;
14                     for (var k = j + 1; k < len; k++)
15                     {
16                         if (A[k] == next)
17                         {
18                             curmax++;
19                             next = A[k] - target;
20                         }
21 
22                     }
23                     maxLength = Math.Max(maxLength, curmax);
24                 }
25             }
26             return maxLength;
27         }
28     }

但同样的代码,使用java实现,却可以正常提交,leetcode对这道题目的的判断机制有点奇怪。

如果想解决超时问题,可以考虑使用哈希或者dp思想,来减少判断的时间。

这种题目,做起来很麻烦,看看别人的思路吧。

猜你喜欢

转载自www.cnblogs.com/asenyang/p/10704697.html