2020-4-17 21:12签到。
继续还是三道题。
两道easy,一道medium。
第一道easy题:理解了涂色块的原理。
第二道easy题:#### 461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目
解法最基础的先异或运算,再循环n次统计1的个数,但是布赖恩·克尼根算法,不采用逐位统计,
比如x=10001000,它采用x&(x-1)就能统计1的个数,直接跳过0。
第三题:#### 55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。
我的解法:(自己写的递归调用,还是挺珍惜的!!!)
int jumps(int *nums,int i,int numsSize)
{
if(numsSize-1==i)
return 1;
else if(nums[i]==0)
return 0;
int j,n,flag=0;
for(j=1;j<=nums[i];++j)
{
n=jumps(nums,i+j,numsSize);
if(n==1)
{
flag=1;
break;
}
}
if(flag)
return 1;
else
return 0;
}
bool canJump(int* nums, int numsSize){
if(jumps(nums,0,numsSize))
return true;
else
return false;
}
但很不幸,在执行一个超大数组时超时了,因此 采用官方推荐的贪心算法。
网友评论