蓝桥杯--新手入门day7

7.整数删除

题目:蓝桥杯--新手入门day7_第1张图片

解法1:暴力for循环

代码1:

def find(n):
    miv=arry[0]
    mid=0
    for i in range(1,len(arry)-1):
        if n[i]0:
            arry[i-1]+=miv
        if mid

解法2:优化找到最小数(只找一次,不是次次都找)。小根堆

代码2:

def heapify(arr, n, i):  # 定义heapify函数,用于调整堆
    smallest = i  # 初始化最小值为当前节点
    left = 2 * i + 1  # 计算左子节点索引
    right = 2 * i + 2  # 计算右子节点索引

    # 如果左子节点存在,且小于当前节点,更新最小值
    if left < n and arr[i] > arr[left]:
        smallest = left

    # 如果右子节点存在,且小于当前节点,更新最小值
    if right < n and arr[smallest] > arr[right]:
        smallest = right

    # 如果最小值不是当前节点,交换它们,并继续heapify过程
    if smallest != i:
        arr[i], arr[smallest] = arr[smallest], arr[i]  # 交换当前节点和最小子节点
        heapify(arr, n, smallest)  # 递归调整子树

def build_heap(arr):  # 定义build_heap函数,用于构建堆
    n = len(arr)  # 获取数组长度
    # 从最后一个非叶子节点开始heapify
    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)  # 对每个非叶子节点调用heapify

def extract_min(arr):  # 定义extract_min函数,用于提取最小元素
    # 将堆顶元素(最小元素)与最后一个元素交换
    arr[0], arr[len(arr) - 1] = arr[len(arr) - 1], arr[0]
    # 移除最后一个元素(现在是最小元素)
    min_value = arr.pop()
    # 重新heapify
    heapify(arr, len(arr), 0)
    return min_value  # 返回最小值

def process_array(n, k):  # 定义process_array函数,用于处理数组
    # 构建小根堆
    build_heap(n)
    
    # 执行K次操作
    for _ in range(k):
        min_value = extract_min(n)  # 提取最小元素
        # 将相邻元素增加min_value
        if len(n) > 0:
            n[0] += min_value  # 更新堆顶元素
        if len(n) > 1:
            n[1] += min_value  # 更新堆顶元素的下一个元素
    
    return n  # 返回处理后的数组

# 输入处理
n, k = map(int, input().split())  # 读取数组长度和操作次数
array = list(map(int, input().split()))  # 读取数组元素

# 处理数组并输出结果
result = process_array(array, k)  # 调用process_array函数处理数组
print(" ".join(map(str, result)))  # 输出结果,元素之间用空格分隔

易错点:

1.找出一维数组最小的数模板

# 假设这是你的一维数组
n = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 初始化最小值变量为数组的第一个元素
if n:  # 确保数组不为空
    min_value = n[0]
    min_index = 0
else:
    print("数组为空")
    min_value = None
    min_index = None

# 遍历数组中的每个元素
for i in range(1, len(n)):
    # 如果当前元素小于已知的最小值,则更新最小值和索引
    if n[i] < min_value:
        min_value = n[i]
        min_index = i

# 输出最小值及其索引
print("数组中的最小值是:", min_value, ",索引位置是:", min_index)

2. 二维表达式形式:

# 假设我们想要创建一个m行n列的二维数组,初始化所有元素为0
m = 3  # 行数
n = 4  # 列数

# 使用两个for循环和列表推导式创建二维数组
array_2d = [[0 for _ in range(n)] for _ in range(m)]

 3.map函数

map 函数在Python中可以被看作是一种“批量处理”工具。它的作用是将一个函数应用到一个或多个可迭代对象(比如列表、元组等)的每个元素上,然后收集处理后的结果。

你可能感兴趣的:(蓝桥杯,新手入门,python,每日一题,算法)