现在给定一个数组arr,和a,b两个数字,你要做的就是找到(i,j,k)。且满足 1. 0 <= i < j < k < arr.size() 2. |arr[i] – arr[j]| <= a 3. |arr[j] – arr[k]| <= b 统计满足条件的个数并返回(最后结果可能很大,请取1000000007的余数)。-笔试面试资料

这是qklbishe.com第13349 篇笔试面试资料
提供答案分析,通过本文《现在给定一个数组arr,和a,b两个数字,你要做的就是找到(i,j,k)。且满足 1. 0 <= i < j < k < arr.size()
2. |arr[i] – arr[j]| <= a
3. |arr[j] – arr[k]| <= b
统计满足条件的个数并返回(最后结果可能很大,请取1000000007的余数)。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

现在给定一个数组arr,和a,b两个数字,你要做的就是找到(i,j,k)。且满足
1. 0 <= i < j < k < arr.size()
2. |arr[i] – arr[j]| <= a
3. |arr[j] – arr[k]| <= b
统计满足条件的个数并返回(最后结果可能很大,请取1000000007的余数)。
现在给定一个数组arr,和a,b两个数字,你要做的就是找到(i,j,k)。且满足    1. 0 &lt;= i &lt; j &lt; k &lt; arr.size()      2. |arr[i] - arr[j]| &lt;= a      3. |arr[j] - arr[k]| &lt;= b      统计满足条件的个数并返回(最后结果可能很大,请取1000000007的余数)。 Stormzudi
1. 用参数 i 遍历数组
2. 判断 j<i 左边数组 arr[j] : abs(arr[j] – arr[i]) <= a  , l += 1
3. 判断 j>i 右边数组 arr[j] : abs(arr[j] – arr[i]) <= b  , r += 1
4. 对于第i轮,总共有l*r个组合结果
5. 统计总共所有的遍历结果 ans
class Solution:     def countTriplets(self , arr , a , b ):         # write code here         ans = 0         n = len(arr)         mod = 10 ** 9 +7                  for i in range(n):                          l,r = 0,0             for j in range(i):                 if abs(arr[j] - arr[i]) <= a:                     l += 1                          for j in range(i+1, n):                 if abs(arr[j] - arr[i]) <= b:                     r += 1             ans = (ans + l*r ) % mod         return ans

今天 14:19:38 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 现在给定一个数组arr,和a,b两个数字,你要做的就是找到(i,j,k)。且满足 1. 0 <= i < j < k < arr.size() 2. |arr[i] – arr[j]| <= a 3. |arr[j] – arr[k]| <= b 统计满足条件的个数并返回(最后结果可能很大,请取1000000007的余数)。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情