力扣每日一题 5/25

简介: 力扣每日一题 5/25

题目:

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。

你的任务是从范围 [0, n - 1] 内找出  2 个满足下述所有条件的下标 i 和 j :

  • abs(i - j) >= indexDifference 且
  • abs(nums[i] - nums[j]) >= valueDifference

返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。

注意:i 和 j 可能 相等 。

示例 1:

输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4

输出:[0,3]

解释:在示例中,可以选择 i = 0 和 j = 3 。

abs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。

因此,[0,3] 是一个符合题目要求的答案。

[3,0] 也是符合题目要求的答案。

示例 2:

输入:nums = [2,1], indexDifference = 0, valueDifference = 0

输出:[0,0]

解释:

在示例中,可以选择 i = 0 和 j = 0 。

abs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。

因此,[0,0] 是一个符合题目要求的答案。

[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。

示例 3:

输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4

输出:[-1,-1]

解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。

因此,返回 [-1,-1] 。

解题思路:

       两层for循环,第一层遍历下标为0到(n-indexDifference),第二层遍历(i+indexDifference)到n,这样就可以保证下标差一定是满足第一个条件的,我们只需要去判断第二个条件是否成立即可。

代码:

class Solution:
    def findIndices(self, nums: list[int], indexDifference: int, valueDifference: int) -> list[int]:
        n=len(nums)
        for i in range(n-indexDifference):
            for j in range(i+indexDifference,n):
                if abs(nums[i]-nums[j])>=valueDifference:
                    return [i,j]
        return [-1,-1]

   这段代码定义了一个名为Solution的类,其中包含一个名为findIndices的方法。该方法接受一个整数列表nums,一个整数indexDifference和一个整数valueDifference作为输入。它返回一个包含两个索引i和j的列表,这两个索引位置上的数字的绝对差至少为valueDifference,并且它们的索引距离大于等于indexDifference。  

       如果存在这样的索引位置,则该方法返回这些索引[i, j],否则返回[-1, -1]。

       这个实现循环遍历了指定范围内的索引i和j,并检查是否满足绝对差条件。如果满足条件,方法会返回这两个索引。这段代码存当找到满足条件的第一对索引时就返回,符合题意。

目录
相关文章
|
6月前
|
存储 vr&ar Python
力扣每日一题 6/5
力扣每日一题 6/5
47 3
|
6月前
|
存储
力扣每日一题 6/9
力扣每日一题 6/9
44 5
|
6月前
|
算法
力扣每日一题 6/6
力扣每日一题 6/6
42 3
|
6月前
|
Python
力扣每日一题 5/30
力扣每日一题 5/30
36 3
|
6月前
力扣每日一题 5/29
力扣每日一题 5/29
36 3
|
6月前
力扣每日一题 6/3
力扣每日一题 6/3
33 3
|
6月前
|
存储 人工智能 算法
力扣每日一题 6/4
力扣每日一题 6/4
36 3
|
6月前
力扣每日一题 6/7
力扣每日一题 6/7
36 3
|
6月前
力扣每日一题 6/8
力扣每日一题 6/8
34 3
|
6月前
力扣每日一题 6/1
力扣每日一题 6/1
42 3