问题描述
给出一个包含N个整数的数组,您的任务是:
我特别无法通过测试用例
我得到这个作为输出
这是我的代码
#include <bits/stdc++.h>
using namespace std;
void heapify(vector<int>&v,int idx,int last)
{
int left = 2*idx;
int right = left+1;
int min_idx = idx;
if(left<=last and v[min_idx]>v[left]) min_idx = left;
if(right<=last and v[right]<v[min_idx]) min_idx = right;
if(min_idx != idx)
{
swap(v[min_idx],v[idx]);
heapify(v,min_idx,last);
}
}
void build_min_heap(vector<int>&v)
{
int n = v.size()-1;
for(int i=n/2; i>=0; i--) heapify(v,i,n);
}
void print(vector<int>v)
{
for(int i=0; i<v.size(); i++) cout<<v[i]<<" ";
cout<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,rm;
cin>>n>>rm;
vector<int>v;
v.reserve(n);
for(int i=0; i<n; i++)
{
int k;
cin>>k;
v.push_back(k);
}
build_min_heap(v);
v.erase(v.begin()-1+rm);
build_min_heap(v);
print(v);
}
return 0;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)