Skip to content

Files

Latest commit

3b4a836 · Dec 4, 2024

History

History

2057.Smallest Index With Equal Value

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Dec 4, 2024
Dec 4, 2024
Dec 4, 2024
Dec 4, 2024
Dec 4, 2024
Jun 29, 2022
Dec 4, 2024
Dec 4, 2024
Dec 4, 2024
comments difficulty edit_url rating source tags
true
简单
1167
第 265 场周赛 Q1
数组

English Version

题目描述

给你一个下标从 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

解法

方法一:遍历

我们直接遍历数组,对于每个下标 i ,我们判断是否满足 i mod 10 = nums [ i ] ,如果满足则返回当前下标 i

如果遍历完数组都没有找到满足条件的下标,则返回 1

时间复杂度 O ( n ) ,其中 n 是数组的长度。空间复杂度 O ( 1 )

Python3

class Solution:
    def smallestEqual(self, nums: List[int]) -> int:
        for i, x in enumerate(nums):
            if i % 10 == x:
                return i
        return -1

Java

class Solution {
    public int smallestEqual(int[] nums) {
        for (int i = 0; i < nums.length; ++i) {
            if (i % 10 == nums[i]) {
                return i;
            }
        }
        return -1;
    }
}

C++

class Solution {
public:
    int smallestEqual(vector<int>& nums) {
        for (int i = 0; i < nums.size(); ++i) {
            if (i % 10 == nums[i]) {
                return i;
            }
        }
        return -1;
    }
};

Go

func smallestEqual(nums []int) int {
	for i, x := range nums {
		if i%10 == x {
			return i
		}
	}
	return -1
}

TypeScript

function smallestEqual(nums: number[]): number {
    for (let i = 0; i < nums.length; ++i) {
        if (i % 10 === nums[i]) {
            return i;
        }
    }
    return -1;
}

Rust

impl Solution {
    pub fn smallest_equal(nums: Vec<i32>) -> i32 {
        for (i, &x) in nums.iter().enumerate() {
            if i % 10 == x as usize {
                return i as i32;
            }
        }
        -1
    }
}

Cangjie

class Solution {
    func smallestEqual(nums: Array<Int64>): Int64 {
        for (i in 0..nums.size) {
            if (i % 10 == nums[i]) {
                return i
            }
        }
        -1
    }
}