竞赛链接:https://leetcode-cn.com/contest/biweekly-contest-5
1.最大唯一数
给你一个整数数组 A
,请找出并返回在该数组中仅出现一次的最大整数。
如果不存在这个只出现一次的整数,则返回 -1。
示例 1:
输入:[5,7,3,9,4,9,8,3,1]
输出:8
解释:
数组中最大的整数是 9,但它在数组中重复出现了。而第二大的整数是 8,它只出现了一次,所以答案是 8。
示例 2:
输入:[9,9,8,8]
输出:-1
解释:
数组中不存在仅出现一次的整数。
提示:
1 <= A.length <= 2000
0 <= A[i] <= 1000
思路:
开一个足够大的dp数组专门存放整数每个整数出现的次数,遍历一遍数组,找到出现次数为1(dp[i]==1)的所有整数中最大的那个即可。
上AC代码:
class Solution {
public:
int dp[1001];
int largestUniqueNumber(vector<int>& A) {
memset(dp,0,sizeof(dp));
int i;
int len=A.size();
for(i=0;i<len;i++)
{
dp[A[i]]++;
}
int ret=-1;
for(i=0;i<len;i++)
{
if(dp[A[i]]==1)
{
if(A[i]>ret)
{
ret=A[i];
}
}
}
return ret;
}
};
2.阿姆斯特朗数
假设存在一个 k
位数 N
,其每一位上的数字的 k
次幂的总和也是 N
,那么这个数是阿姆斯特朗数。
给你一个正整数 N
,让你来判定他是否是阿姆斯特朗数,是则返回 true
,不是则返回 false
。
示例 1:
输入:153
输出:true
示例:
153 是一个 3 位数,且 153 = 1^3 + 5^3 + 3^3。
示例 2:
输入:123
输出:false
解释:
123 是一个 3 位数,且 123 != 1^3 + 2^3 + 3^3 = 36。
思路:<