一、有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
bool isPerfectSquare(int num) {
int low=1;
int high=num;
while(low<=high){
int mid=low+(high-low)/2;
int t=num/mid;
if(t==mid){
if(num%mid==0)return true;
low=mid+1;
}else if(t<mid){
high=mid-1;
}else{
low=mid+1;
}
}
return false;
}
二、七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出。
string convertToBase7(int num) {
if(num==0){
return "0";
}
if(num==1){
return "1";
}
int flag=1;
int n=0;
if(num<0){
flag=0;
num=abs(num);
}
string str="";
while(num>0){
n=num%7;
str=to_string(n)+str;
num/=7;
}
if(flag==0){
str="-"+str;
}
return str;
}
三、相对名次
给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。
(注:分数越高的选手,排名越靠前。)
vector<string> findRelativeRanks(vector<int>& nums) {
int len=nums.size();
vector<string> v(nums.size());
map<int,int> m;
for(int i=0;i<nums.size();i++){
m[nums[i]]=i;
}
for(auto j:m){
if(len==3){
v[j.second]="Bronze Medal";len--;
}
else if(len==2){v[j.second]="Silver Medal";len--;}
else if(len==1){v[j.second]="Gold Medal";}
else
v[j.second]=to_string(len--);
}
return v;
}
四、完美数
对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。
给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False
示例:
输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14
bool checkPerfectNumber(int num) {
if(num<=1)return false;
int sum=0;
for(int i=1;i*i<=num;i++){
if(num%i==0){
if(num/i==i){
sum+=i;
}else{
sum+=(num/i+i);
}
}
}
if(sum-num==num)return true;
return false;
}
五、检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。
bool detectCapitalUse(string word) {
int big=0;
int small=0;
for(int i=0;i<word.size();i++){
if(word[i]>='A'&&word[i]<='Z'){
big++;
}
if(word[i]>='a'&&word[i]<='z'){
small++;
}
}
if(big==word.size()||small==word.size()){
return true;
}
if(word.size()>1&&big==1&&word[0]>='A'&&word[0]<='Z'){
return true;
}
return false;
}