没啥好说的,感觉回到了高中,仿佛就像你写一道大题用了各种花活,结果别人几行就搞完了,浪费时间(不是)
先看题目
给你一个下标从 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。。。