练习题分享给大家-----------面试题

练习题

获取杨辉三角

创建函数,生成指定行数的杨辉三角。
杨辉三角:
每行端点与结尾的数为1,每个数是它左上方和右上方的数的和

    输入:6
输出:    [
                  [1],
               [1, 1],
              [1, 2, 1],
             [1, 3, 3, 1],
           [1, 4, 6, 4, 1],
         [1, 5, 10, 10, 5, 1]
     ]

```python
  def get_yang_hui_triangle(row_count):# 6
    """
        获取杨辉三角
    :param row_count: int类型,行数
    :return: list类型,杨辉三角
    """
    triangle = []
    for row_index in range(row_count):# 0 1 2 3 .. 5
        # 创建行
        row = [None] * (row_index + 1)
        # 设置首尾
        row[0], row[-1] = 1, 1
        # 设置中间(从第三行开始)
        for i in range(1, 2):#1
            # 当前元素 = 上一行
            row[i] = triangle[row_index - 1][i - 1] + triangle[row_index - 1][i]
        triangle.append(row)
    return triangle


print(get_yang_hui_triangle(6))

水仙花数

"水仙花数":各位数字立方和等于该数本身
定义函数,根据***位数***计算水仙花数
输入:3
输出:[153, 370, 371, 407]

“”"
``

def is_daffodil(number):
    """
        判断指定数字是否为水仙花数
    :param number: int 类型,表示需要判断的数字
    :return: bool 类型,表示是否为水仙花数。
    """
    str_number = str(number)
    power = len(str_number)
    sum_value = 0
    for item in str_number:
        sum_value += int(item) ** power
    return sum_value == number


def get_daffodil(n):
    """
        获取指定位数的水仙花数
    :param n:int类型,表示整数位数。
    :return:列表类型,水仙花数。
    """
    # list_list = []
    # for i in range(10 ** (n - 1), 10 ** n):
    #     if is_daffodil(i):
    #         list_list.append(i)
    # return list_list
    return [num for num in range(10 ** (n - 1), 10 ** n) if is_daffodil(num)]


print(get_daffodil(3))

“”"

二分查找

定义函数,在有序数字列表中找到目标值,并返回其索引。
如果目标值不在列表中,返回它可以按顺序插入的索引。
输入:[1,2,6,8,9]  8
输出:3

输入:[1,2,6,8,9]  5
输出:2

“”"

def search_insert_index(list_number, target):
    left = 0
    right = len(list_number) - 1
    while left <= right:
        mid = (left + right) // 2
        if list_number[mid] == target:
            return mid
        elif list_number[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return left


print(search_insert_index([1, 2, 6, 8, 9], 5))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值