一行代码能做啥?题目难度为容易,目前通过率为45.6% ?你试了试

  

  

  

  有很多伙伴跟我说,每次看完算法的文章,都觉得自己宛如一个智障,有木有同感的伙伴!(只要思想不滑坡,办法总困难多)   

  

  今天就不写太复杂的算法知识了,分享几道LeetCode上一行代码就能交流的算法题。可以瞅瞅你会不,哈哈哈! ! !   

     一行代码能做啥?题目难度为容易,目前通过率为45.6% ?你试试”>
  <p>
  </p>
  
  <h3>
  
  </h3>
  <p>
  题目难度为容易,目前通过率为45.6%。
  </p>
  <p>
  
  </p>
  <p>
  给定一个整数,编写一个函数来判断它是否是2的幂次方。
  </p>
  <p>
  
  </p>
  <p>
  如果一个数是2的次方数的话,那么它的二进数必然是最高位为1时,其它都为0,那么如果此时我们减1的话,则最高位会降一位,其余为0的位现在都为变为1,那么我们把两数相与,就会得到0。
  </p>
  <p>
  
  </p>
  <前>
  class  Solution  {
  公众:
  ,bool  isPowerOfTwo (int  n), {
  ,return  (n 祝辞,0),,,,(! (n ,, (n 作用;1)));
  }大敌;
  };
  </>之前
  <h3>
  
  </h3>
  <p>
  题目难度为容易,目前通过率为43.5%。
  </p>
  <p>
  
  </p>
  <p>
  给定一个整数,写一个函数来判断它是否是3的幂次方。
  </p>
  <p>
  
  </p>
  <p>
  正常的思路是不停地去除以3,看最后的迭代商是否为1。这种思路的代码使用到了循环,逼格不够高。
  </p>
  <p>
  这里取巧的方法,
  
  。
  </p>
  <p>
  题目要求输入的是int类型,正数范围是0 - 2
  
  ,在此范围中允许的最大的3的次方数为3=1162261467,那么只要看这个数能否被n整除即可。
  </p>
  <p>
  
  </p>
  <前>
  class  Solution  {
  ,public  boolean  isPowerOfThree (int  n), {
  ,return  n 祝辞,0,,,,1162261467,%,n ==, 0;
  ,}
  }
  </>之前
  <h3>
  
  </h3>
  <p>
  阶乘后的零。题目难度为容易,目前通过率为38.0%。
  </p>
  <p>
  
  </p>
  <p>
  给定一个整数,
  
  ,返回,
  
  !结果尾数中零的数量。
  </p>
  <p>
  
  </p>
  <p>
  题目很好理解,数阶乘后的数字末尾有多少个零。
  </p>
  <p>
  最简单粗暴的方法就是先乘完再说,然后一个一个的数。
  </p>
  <p>
  事实上,你在使用暴力破解法的过程中就能发现规律:,
  
  。
  </p>
  <p>
  所以,现在问题就变成了这个阶乘数中能配,
  
  ,。
  </p>
  <p>
  举个复杂点的例子:
  </p>
  <前>
  【=10 !还以为;2,* (,2 *,2,)*,5,* (,2 *,3,)* (,2 *,2,*,2,)* (,2 *,5)】
  </>之前
  <p>
  在10 !这个阶乘数中可以匹配两对2 * 5,所以10 !末尾有2个0。
  </p>
  <p>
  可以发现,一个数字进行拆分后的第2个数肯定是大于5的个数的,所以能匹配多少对取决于5的个数。
  </p>
  <p>
  那么问题又变成了,
  
  。
  </p>
  <p>
  需要注意的是,像25125这样的不只含有一个5的数字的情况需要考虑进去。
  </p>
  <p>
  比如n=15。那么在15 !中有3个5(来自其中的5、10、15),所以计算n/5就可以。
  </p>
  <p>
  但是比如n=25日依旧计算n/5,可以得到5个5,分别来自其中的5、10、15、20、25,但是在25中其实是包含2个5的,这一点需要注意。
  </p>
  <p>
  所以除了计算n/5,还要计算n/5/5, n/5/5/5, n/5/5/5/5,……,,n/5/5/5/5直到商为0,然后求和即可。
  </p>
  <p>
  
  </p>
  <前>
  public  class  Solution  {
  ,public  int  trailingZeroes (int  n), {
  ,return  n&nbsp==, 0, ?, 0,:, n /, 5, +, trailingZeroes(时间/n  5);
  ,}
  }
  </>之前
  <p>
  看完后是不是觉得也很简单,很多时候其实人都是有惰性的,不愿意尝试,你只有把它当个事情认真去想,去解,其实一点都不难!哈哈哈,是不是所谓的:只要思想不滑坡,办法总比困难多!加油!我的你们!
  </p>
  <p>
  <br/>
  </p><h2 class=一行代码能做啥?题目难度为容易,目前通过率为45.6% ?你试了试