python手撕代码题

二分查找

def binary_search(target_list, target_node):
    start_index, end_index = 0, len(target_list)
    while True:
        if end_index - start_index <= 1:
            if target_node == target_list[start_index]:
                return start_index
            elif target_node == target_list[end_index]:
                return end_index
            else:
                return -1
        temp_index = (end_index + start_index) // 2
        if target_list[temp_index] >= target_node:
            end_index = temp_index
        else:
            start_index = temp_index

青蛙跳台阶

递归题解

def feibo(n):
    if n <= 3:
        return n
    return feibo(n-1) + feibo(n -2)

动态规划题解

def feibo_2(n):
    temp_list = [0] * (n +1)
    if n == 0:
        return 0
    elif n == 1:
        temp_list[n] = 1
        return 1
    elif n == 2:
        temp_list[1] = 1
        temp_list[n] = 2
        return 2
    else:
        temp_list[1] = 1
        temp_list[2] = 2
        for i in range(3, n+1):
            temp_list[i] = temp_list[i-1] + temp_list[i-2]
        return temp_list[n]

判断素数

def check_num(n):
    if n < 1:
        return "既不是质数也不是合数"
    for i in range(2, n):
        if n % i == 0:
            return "合数"
    return "质数"

def check_num_2(n):
    if n < 1:
        return "既不是质数也不是合数"
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return "合数"
    return "质数"

返回当前文件夹及其子文件夹里面的所有文件地址

import os
def get_dir_sub_file_path_list(target_dir_path, is_only_return_file_name=False, all_sub_file_path_list=[]):
    if os.path.isfile(target_dir_path):
        if is_only_return_file_name:
            # # 若只是要返回文件文,使用这个
            all_sub_file_path_list.append(os.path.basename(target_dir_path))
        else:
            all_sub_file_path_list.append(target_dir_path)
    elif os.path.isdir(target_dir_path):
        for s in os.listdir(target_dir_path):
            # 如果需要忽略某些文件夹,使用以下代码
            # if s == "xxx":
            # continue
            get_dir_sub_file_path_list(os.path.join(target_dir_path, s), is_only_return_file_name=is_only_return_file_name, all_sub_file_path_list=all_sub_file_path_list)
    return all_sub_file_path_list

冒泡排序

def bubble_sort(alist):
    """冒泡排序"""
    alist_len = len(alist)
    for j in range(0, alist_len-1):
        # j表示每次遍历需要比较的次数,是逐渐减小的
        for i in range(alist_len - j - 1):
            if alist[i] > alist[i + 1]:
                alist[i], alist[i + 1] = alist[i + 1], alist[i]
    return alist
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值