2057-值相等的最小索引

Raphael Liu Lv10

给你一个下标从 0 开始的整数数组 nums ,返回 nums 中满足 __i mod 10 == nums[i] __ 的最小下标 i
;如果不存在这样的下标,返回 __-1 __ 。

x mod y 表示 x 除以 y余数

示例 1:

**输入:** nums = [0,1,2]
**输出:** 0
**解释:**
i=0: 0 mod 10 = 0 == nums[0].
i=1: 1 mod 10 = 1 == nums[1].
i=2: 2 mod 10 = 2 == nums[2].
所有下标都满足 i mod 10 == nums[i] ,所以返回最小下标 0

示例 2:

**输入:** nums = [4,3,2,1]
**输出:** 2
**解释:**
i=0: 0 mod 10 = 0 != nums[0].
i=1: 1 mod 10 = 1 != nums[1].
i=2: 2 mod 10 = 2 == nums[2].
i=3: 3 mod 10 = 3 != nums[3].
2 唯一一个满足 i mod 10 == nums[i] 的下标

示例 3:

**输入:** nums = [1,2,3,4,5,6,7,8,9,0]
**输出:** -1
**解释:** 不存在满足 i mod 10 == nums[i] 的下标

示例 4:

**输入:** nums = [2,1,3,5,2]
**输出:** 1
**解释:** 1 是唯一一个满足 i mod 10 == nums[i] 的下标

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 9

方法一:顺序遍历数组

思路与算法

我们可以顺序遍历数组 nums 的下标 i,检查 i \bmod 10 = \textit{nums}[i] 是否成立。

如果成立,则该下标即为值相等的最小索引,我们返回该下标作为答案。若遍历完整个数组均未找到符合要求的下标,则返回 -1。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int smallestEqual(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n; ++i){
if (i % 10 == nums[i]){
return i;
}
}
return -1;
}
};
[sol1-Python3]
1
2
3
4
5
6
7
class Solution:
def smallestEqual(self, nums: List[int]) -> int:
n = len(nums)
for i in range(n):
if i % 10 == nums[i]:
return i
return -1

复杂度分析

  • 时间复杂度:O(n),其中 n 为 nums 的长度。即为遍历数组寻找符合要求的最小索引的时间复杂度。

  • 空间复杂度:O(1)。

 Comments
On this page
2057-值相等的最小索引