ACwing 刷题 1.1

题目:

思路:首先想到的是先把数组里的元素排序后,在对比相邻的两个数组值,相同则输出。但是老调试不过,就很烦。

最后 偷偷看了题解

思路是先创建于一个个数为n,值全为0 的数组,然后对遍历已知数组值,将该数组值对应创建数组的序号处加一,此处用if语句判断,如果有重复则再次判断时成立,小技巧是nums[i]++ 先判断在加一!!

 

代码:

class Solution {
public:
int duplicateInArray(vector<int>& nums) {
int n=nums.size();
vector<int> temp(n,0);
for(auto i:nums)
{
if(i<0 ||i>=n)
{
return -1;
}
}
for(int i=0;i<n;i++)
{
if(temp[nums[i]]++){
return nums[i];
}
}
return -1;
}
};

 

作者:赵强
链接:https://www.acwing.com/solution/acwing/content/1111/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/lizimu/p/10555578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值