safe or unsafe

链接

这题要求我们对WPL(带全路径长度)进行计算,而WPL就等于每个子节点相加后形成的加权节点的总和,比如有四组数据出现的频率分别是1 2 3 4

那么加权节点的值分别为1+2=3,3+3=6,6+4=10,总和为19

直接计算WPL=3x(1+2)+2x3+1x4=19

二者相等,依据这个就好处理了

考虑使用map统计频率,用优先队列来进行计算

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;cin >> n;
	for (int i = 0;i < n;i++) {
		int setWPL;
		int WPL = 0;
		cin >> setWPL;
		string str;
		cin >> str;
		map<char, int>freq;
		for (char ch : str) {
			freq[ch]++;
		}
		priority_queue<int,vector<int>,greater<int>> tree;
		for (const auto& it : freq) {
			tree.push(it.second);
		}
		if (tree.size() == 1) {
			WPL = tree.top();
		}
		while (tree.size()>1) {
			int a, b;
		
			a= tree.top();
			tree.pop();
			b= tree.top();
			tree.pop();
			tree.push(a + b);
			WPL += (a + b);
		}
		
		if (WPL <= setWPL) {
			cout << "yes" << endl;
		}
		else {
			cout << "no" << endl;
		}

	}
}

时间复杂度:O(n)

空间复杂度:O(n时间复杂度:O(n × (m + k log k))

n:测试用例数量

m:每个字符串长度

k:字符串中不同字符数量

空间复杂度:O(m + k)

全部评论

相关推荐

今天 02:31
已编辑
门头沟学院 前端工程师
第一次面试特别特别的紧张啊,面试前手都一直在抖站不稳timeline:12.1上午发简历直接约面12.2下午开始面试(27min)面试官一男一女,男好像是研发经理TvT,基本上是女生在问忘记录音了,记得的就这些先是自我介绍看到其它面经有说要自我介绍,面试开始前一个小时瞎写然后背下来的TvT自我介绍过程我还支支吾吾说我还干了啥来着项目1.&nbsp;Github&nbsp;Action有了解过是干嘛吗?(我没答出来,我懵了,我真的懵了,不是就干CI/CD的嘛,还能干啥TvT,好叭还是我基础没打好,不是我怎么因为懵了之后部署CI/CD都没说直接说不知道,叽里咕噜说可以看cicd流程哪里出问题去改错)2.&nbsp;你的&nbsp;CI/CD&nbsp;都干了些什么3.&nbsp;Form&nbsp;分层架构是怎么实现的4.&nbsp;memorepo&nbsp;架构5.&nbsp;Module&nbsp;Federation&nbsp;的实现原理6.&nbsp;React.memo,useMemo,useCallback7.&nbsp;Transition&nbsp;组件性能指标用什么工具实现8.&nbsp;组件怎么实现按需引入的?(继续脑袋宕机,然后编了一个说build.lib.format默认配置了&nbsp;esm,打包默认就能实现基础1.&nbsp;列表渲染为什么需要key?&nbsp;key用index会出现什么问题(答了前面一个,后面脑袋宕机了,面试官提示了还是支支吾吾的TvT我发誓一定好好看八股)2.&nbsp;Vite&nbsp;和&nbsp;Webpack&nbsp;的区别3.&nbsp;Vite&nbsp;构建方面,Tree-shacking,&nbsp;ESM4.&nbsp;虚拟列表的实现原理5.&nbsp;React&nbsp;和&nbsp;Vue&nbsp;状态管理的区别?渲染的区别(我这里说到组件通信去了。?我在干什么啊……但是说了Vue用的vuex和pinia,react用context,redux,zustand啥啥啥,渲染的区别先说了React是根据setState或者dispatch触发渲染,然后面试官说好可以了,我:懵.jpg,然后继续问问题了6.Promise解决了什么问题?all和race的区别,all如果有一个返回reject会怎样(和allSettled记混了TvT,说会继续执行Promise,然后结果一起返回)其他1.&nbsp;最近有学什么东西吗(说自己在学习langchain&nbsp;langgraph)2.&nbsp;我看你大二,有时间来实习吗,能实习多久3.&nbsp;你觉得怎样的代码是好的代码反问第一次面试不知道问些什么,就问了一下业务,研发经理跟我说,就是负责公司内部Github&nbsp;Action相关的东西(我一想到没答出action心凉了半截)无算法无手写发发面经攒人品,求求绿盟让我过TvT第一段实习能去绿盟我也会很高兴的就是说,看到ssob上和我对接的人前面还回复了四个人,压力压力
查看17道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务