给定一个数组,求选择出一个 最长的 公差为 k 的等差数列。如果有多个这样的等差数列,选择起点最小的那个。
他们同时对k取模,得到这个序列的最小非负整数,如果相等,则处于同一个等差序列。这样我们只需要用哈希表统计a[i] % k的个数。
给定一个整数数组nums,同时给定一个整数interval。
指定数组nums中的某个元素作为起点,然后以interval 为间隔递增,如果递增的数(包含起点)等于nums中的元素,则数组nums中对应的元素消除,返回消除元素最多的起点元素。如果消除的元素同样多,则返回最小的起点元素。
输入格式:
第一行输入整数数组的长度n
第二行输入长度为n的整数数组nums
第三行输入整数interval
1<=n<=105
0<=nums[i]<=108
0<=interval<=105
起点元素的最小值
输入
6
4 5 7 1 1 2
3
输出
1
说明
输入给定的间隔为3,如果以元素1为起点,则可以消除1,4,7,10,...这些元素,因此,我们可以消除给定数组中的4,7,1,1这4个元素,以其他元素为起点也没有办法消除更多元素了,因此返回1
输入
5
4 5 7 1 2
50
输出
1
说明
输入给定的间隔为50,如果以元素1为起点,则可以消除1,51,101这些元素,因此,我们可以消除给定数组中的1这个元素,同理,如果以2为起点,则可以消除2,52,102这些元素,因此我们可以消除给定数组中的2这个元素,以此类推,无论以哪个元素作为起点,都只能消除1个元素,因此返回最小的起点元素1。