leetcode1027
最直接的思路是三层循环,但是会超时,代码如下:
- public class Solution
- {
- public int LongestArithSeqLength2(int[] A)
- {
- var maxLength = ;
- var len = A.Count();
- for (var i = ; i < len; i++)
- {
- for (var j = i + ; j < len; j++)
- {
- var curmax = ;
- var target = A[i] - A[j];
- var next = A[j] - target;
- for (var k = j + ; k < len; k++)
- {
- if (A[k] == next)
- {
- curmax++;
- next = A[k] - target;
- }
- }
- maxLength = Math.Max(maxLength, curmax);
- }
- }
- return maxLength;
- }
- }
但同样的代码,使用java实现,却可以正常提交,leetcode对这道题目的的判断机制有点奇怪。
如果想解决超时问题,可以考虑使用哈希或者dp思想,来减少判断的时间。
这种题目,做起来很麻烦,看看别人的思路吧。
当时没想出来怎么做,经过一段时间的练习(两个半月),重新做这道题目,顺利做出来了,说明练习还是有效果的。
给出一份python的实现:
- class Solution:
- def longestArithSeqLength(self, A: 'List[int]') -> int:
- n = len(A)
- if n == :
- return
- dic = {:{:}}
- longest =
- for i in range(,n):
- if i not in dic:
- dic[i] = {:}
- for j in range(i):
- diff = A[i] - A[j]
- if diff not in dic[j]:
- dic[i][diff] =
- else:
- dic[i][diff] = dic[j][diff] +
- longest = max(longest,dic[i][diff])
- return longest
使用hash缓存之前的记录,从三层循环减少为两层循环,时间复杂度为O(n^2),但是增加了空间复杂度。典型的用空间换时间的思想。
dic是一个字典,key值是数组的下标,value值是一个字典类型。
这个value字典,key值是int类型,表示两项之间的差;value值是int类型,表示这个差值形成的等差数列的长度。
因此每次循环用longest记录任意一个差值所形成的最长的等差数列的长度,即为所求。
leetcode1027的更多相关文章
- [Swift]LeetCode1027. 最长等差数列 | Longest Arithmetic Sequence
Given an array A of integers, return the length of the longest arithmetic subsequence in A. Recall t ...
随机推荐
- URL和URI(简单介绍)
URL与URI 我们经常接触到的就是URL了,它就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢? URL:uniform resource location 统一资源定位符U ...
- JavaScript 之 DOM
1. DOM DOM:Document Object Model 文档对象模型,定义访问和操作结构化文档(HTML)的方式. 在 HTML DOM (Document Object Model) 中 ...
- CHECK约束表达式
1.性别:只能填写'男'和'女' (字段名='男'or 字段名='女') 注意:单引号里的值可以为其他任何字 2.规定密码长度不能小于6位数 (len([字段名])>(5)) 3.例:成绩在 ...
- Python 进程池的同步方法
import time from multiprocessing import Process,Pool def f1(n): time.sleep(1) #print(n) return n*n i ...
- Linux下使用Nginx代理访问json文件报404错误
在网上看了很多,都说是IIS的问题,关键是使用servlet就可以正常访问,使用Nginx就不行,最后发现是其他问题,解决方案如下: 1.确认配置的路径是否正确,Nginx代理的路径和你访问的路径. ...
- ubuntu下安装mysql和配置远程访问
ubuntu下安装mysql和配置远程访问 下载安装mysql sudo apt-get install mysql-client mysql-server 安装的时候会提示要设置root密码,如 ...
- Yii2事件驱动的运行机制
最近一段时间正在作个一个项目,这个项目会系统逻辑比较复杂,使用PHP Yii2,使用事件驱动机制进行研发,下面就最近研究事件驱动机制的使用作以下总结: 流程如下: 1.要创建含有事件注入的类,一般这样 ...
- fixed 相对于父容器定位
当一个元素设置为 fixed 或 absolute,不设置 top, left 则会在原位置,而脱离文档流,别的元素可以存在于它之后. 而当使用 fixed 后还想相对于父容器进行定位,或者说在当前位 ...
- BSGS模板(慢速)
//author Eterna #define Hello the_cruel_world! #pragma GCC optimize(2) #include<iostream> #inc ...
- PythonStudy——三元表达式 Ternary expression
Python中的三目运算其实就是if...else...的语法糖 # 三目运算符:用于简化 if...else...的语法结构# -- 1) 只能解决if...else...结构,其他if分支结构都不 ...