2/27坚持学习(递归、位运算二进制)

剑指offer
1.一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

class Solution:
    def jumpFloor(self, number):
        # write code here
        if number <=2:
            return number
        prepre=1
        pre=2
        t=0
        for i in range(2,number):
            t = pre + prepre
            prepre = pre
            pre = t
        return t

2.一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

class Solution:
  def jumpFloorII(self, number):
      # write code here
      t=1
      if number<=2:
          return number
      else:
          for i in range(number-1):
              t *= 2
      return t

启发:1.2的幂次方可用左移位来做 即 return 1<<(number-1);

3.我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
斐波那契不贴代码了,主要学会分解问题。

4.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

class Solution:
 def NumberOf1(self, n):
     # write code here
     if n >=0 :
         return bin(n).count('1')
     else:
         n = abs(n)-1
         return 32-bin(n).count('1')

启发:https://www.cnblogs.com/cotyb/archive/2016/02/11/5186461.html
1.把一个整数减去1之后再和原来的整数做按位与,得到的结果相当于是把整数的二进制表示中最右边的一个1变成0
2.bin()是将整型转换为二进制数组成的字符串,注意它的结果是个字符串
3.可这样:

def num_of_one(num):
 nbin = bin(n & 0xffffffff)
 return nbin.count('1')

5.给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

    def Power(self, base, exponent):
     # write code here
     t=1
     if exponent<0:
         base = 1 / base
         exponent = (-1) * exponent
     for i in range(exponent):
         t = t * base
     return t
     

考虑负数完整即可
评论里面有个快速幂的方法:https://blog.csdn.net/hkdgjqr/article/details/5381028
明天学一下 今天就到这里吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值