#include<iostream>usingnamespace std;constint N =1e5+10;// h数组表示堆,从1开始编号,h[1]代表堆中编号为1的节点的值// h_size表示堆的大小int h[N], h_size;// 当编号为i的节点的值大于左右孩子时,下沉该节点voiddown(int i){// t指针始终指向父节点和左右孩子中值最小的节点// i是父节点; t一开始指向父节点int t = i;// 先判断有没有左右孩子,再将值最小的节点的编号用t保存if(2* i <= h_size && h[2* i]< h[t]) t =2* i;if(2* i +1<= h_size && h[2* i +1]< h[t]) t =2* i +1;if(t != i){swap(h[i], h[t]);down(t);}}intmain(){int n, m;
cin >> n >> m;// 初始堆for(int i =1; i <= n; i ++) cin >> h[i];// 构造小根堆; 从n/2节点开始down; down完后堆顶是最小元素
h_size = n;for(int i = n /2; i >=1; i --)down(i);while(m --){
cout << h[1]<<" ";// 用堆中最后一个节点覆盖堆顶,相当于删掉了堆顶
h[1]= h[h_size];
h_size --;// 再down新堆顶down(1);}return0;}
Python | TypeError: ‘function’ object is not subscriptable
在Python编程中,遇到“TypeError: ‘function’ object is not subscriptable”这一错误通常意味着你尝试像访问列表、元组、字典或字符串等可订阅(subscriptable)对象那样去…
题目描述
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相…