Leetcode 2057:值相等的最小索引——论我和大佬的差距(2)


avatar
Mr_B1N 2024-02-09 213

没啥好说的,感觉回到了高中,仿佛就像你写一道大题用了各种花活,结果别人几行就搞完了,浪费时间(不是)

先看题目

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

我写的

我的思路:先创建一个ans数组,再遍历一遍题目给的nums数组,当取到正确的数后,将下表存储在ans数组中,再用三个if语句将结果数组(Tips:求数组中的最小值可用函数*min_element(p, p + n),就是在p~p+n范围内的最小的数,max类同)

class Solution {
public:
    int smallestEqual(vector<int>& nums) {
        int count = 0, j = 0;
        vector<int> ans;
        for (int i = 0; i < nums.size(); ++i) {
            if (i % 10 == nums[i]) {
                count++;
                ans.push_back(i);
            }
        }
        if (count == 0)
            return -1;
        if (count == nums.size())
            return 0;
        else
            return *min_element(ans.begin(), ans.end());
    }
};

大佬写的

思路就不说了,写得很清楚

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

还有两个月就是蓝桥杯了,冲刺ing。。。

暂无评论

发表评论