9.26腾讯客户端笔试题

1.二叉树去重
map标记一下,遇到相同的就删除,fa -> left / fa -> right,赋值为NULL

感觉题目有点问题,[1,3,2*,2+] 按题意来说,应该删除2*,代码写成删除2+,(2*应该比2+更右),不过也通过了

2.找平方
#include <bits/stdc++.h>

using namespace std;
#define ll long long
const int N = 1e5 + 2;
ll a[N];
unordered_map<ll,int>mp;
int n,cnt = 0;
int main() {
	freopen("test.in","r",stdin);
	
	scanf("%d",&n);
	for(int i = 1; i <= n; ++ i) {
		ll x;
		scanf("%lld",&x);
		mp[x] = true;
		a[i] = x;
		if(x == 1) ++ cnt;
	}
	if(cnt >= 2){
		cout << 1 << " " << 1 << "\n";
		return 0;
	}
	for(int i = 1;i <= n; ++ i){
		if(a[i] != 1 && mp[a[i] * a[i]]){
			cout << a[i] << " " << a[i] * a[i] << endl;
			return 0;
		}
	}
	puts("-1");
	return 0;
}
3.序列最大值最小值和
#include <bits/stdc++.h>

using namespace std;
#define ll long long
const int N = 1e5 + 2;
ll a[N];
ll ans = 0;
int n;

const ll mod = 1e9 + 7;

vector<int>v;

int main() {
//	freopen("test.in","r",stdin);
	scanf("%d",&n);

	for(int i = 1; i <= n; ++ i) scanf("%d",a + i);
	sort(a + 1,a + n + 1);
	
	ll tmp = 1;
	for(int i = 1;i <= n; ++ i){
		ans = (ans + tmp * a[i] % mod) % mod;
		tmp = (tmp * 2) % mod;
	}
	reverse(a + 1,a + n + 1);

	tmp = 1;
	for(int i = 1;i <= n; ++ i){
		ans = (ans + tmp * a[i] % mod) % mod;
		tmp = (tmp * 2) % mod;
	}
	printf("%lld\n",ans);
	return 0;
}
4.二分+贪心 贪得略有问题,先手应该是尽量不杀死,时间不够没实现 通过70%
#include <bits/stdc++.h>

using namespace std;
#define ll long long
const int N = 1e5 + 2;

int a[N],b[N];
ll ans = 0;
int n,m;

int del[N],add[N];

bool check(int res) {


	multiset<int>st;
	multiset<int>mst;
	for(int i = 1; i <= res; ++ i) st.insert(b[i]);

	for(int i = 1; i <= n; ++ i) mst.insert(a[i]);

//	cout << "debug" << endl;
//	for(auto x : mst) {
//		cout << x << endl;
//	}
	while(mst.size()) {
		int sz = st.size();
		if(sz == 0) return false;

		auto it = mst.upper_bound(sz);
		
		if(it == mst.end()) -- it;
		int mx = *it;
		
		if(mx > sz) {
			mst.erase(mst.find(mx));
			mst.insert(mx - sz);
		} else {
			if(mst.size() == 0) return true;
			auto it = mst.begin();
			int d = (*it);
			mst.erase(mst.find(d));
		}
		int tot = mst.size();
		if(tot == 0) return true;
		
		del[0] = 0;
		add[0] = 0;
		for(auto x : st) {
			if(tot == 0) break;

			if(x <= tot) {
				del[++ del[0]] = x;
				tot -= x;
			} else {
				del[++ del[0]] = x;
				add[++ add[0]] = x - tot;
				tot = 0;
			}
		}
		for(int i = 1; i <= del[0]; ++ i) st.erase(st.find(del[i]));
		for(int i = 1; i <= add[0]; ++ i) st.insert(add[i]);
	}
	return true;
}
int main() {

//	freopen("test.in","r",stdin);

	scanf("%d %d",&n,&m);

	for(int i = 1; i <= n; ++ i) scanf("%d",a + i);
	for(int i = 1; i <= m; ++ i) scanf("%d",b + i);
//	sort(b + 1,b + n + 1,[&](int x,int y) {
//		return x > y;
//	});
	int l = 1,r = m,ans = -1;
	while(l <= r) {
		int mid = (l + r) / 2;
		if(check(mid)) {
			ans = mid;
			r = mid - 1;
		} else l = mid + 1;
	}
	printf("%d\n",ans);
	return 0;
}
5.四个数异或 按位算贡献,只有奇数个1有贡献,也就是选出1或3个1,其余的全0
#include <bits/stdc++.h>

using namespace std;
#define ll long long
const int N = 1e5 + 2;
int n;
ll inv[N],fac[N],cnt[N];
const ll mod = 1e9 + 7;

ll C(ll x,ll y){
	if(x < y) return 0ll;
	return fac[x] * inv[y] % mod * inv[x - y] % mod;
}

ll mod_pow(ll a,ll b){
	ll res = 1;
	while(b){
		if(b & 1) res = (res * a) % mod;
		a = (a * a) % mod;
		b >>= 1;
	}
	return res;
}

int main() {
	freopen("test.in","r",stdin);
	
	scanf("%d",&n);
	fac[0] = inv[0] = 1;
	
	for(int i = 1;i <= n; ++ i) fac[i] = fac[i - 1] * i % mod;
	for(int i = 1;i <= n; ++ i) inv[i] = mod_pow(fac[i],mod - 2);
	
	for(int i = 1; i <= n; ++ i) {
		ll x;
		scanf("%lld",&x);
		for(int j = 0;j <= 30; ++ j){
			if((x >> j) & 1) ++ cnt[j];
		}
	}
	
	ll tmp = 1,ans = 0;
	for(int i = 0;i <= 30; ++ i){
		ans = (ans + (tmp * (C(cnt[i],1) * C(n - cnt[i],3) % mod + C(cnt[i],3) * C(n - cnt[i],1) % mod) % mod) % mod)% mod;
		tmp = tmp * 2 % mod;
	}
	printf("%lld\n",ans);
	return 0;
}

END.


#腾讯笔试##腾讯##笔经#
全部评论

相关推荐

整体时间线:2月末力扣从零开始。3月初刷题成瘾,中旬陆续开面开杀,被机试折磨,下旬纠结日常offer选择。4月入职淘天,从硬landing到上手业务快乐融入5月平静美好,顺利到我觉得直接转正是最佳选择,月底转暑期流程被hr直接挂,主管诱骗能转正,万幸蚂蚁暑期流程没拒掉,压哨发意向,手里也还有个腾讯offer兜底,毁约腾讯暑期到此结束。==============================一些感悟:永远保留后手,先拿了阿里国际日常,拿到网易伏羲offer之后才拒绝意向,中间难免要催hr尽量开在同一时间,后续等淘天oc的时候立马拒了网易意向。不会让手里超过2个offer,但是也不会在未确定的时候就拒掉到手的。在淘天的时候师兄主管都保证能转正别担心,甚至主管拉我进内部群一起团建,但是始终把腾讯offer抓在手里,也给了我撕破脸之后和主管谈判的底气。蚂蚁一面二面间隔一个半月,时不时反向保温一下面试官又没拒掉流程,真是我最明智的选择。==============================实习体验:研一在鹅厂AI&nbsp;Lab实习打杂纯快乐的,自己包装一下也是有产出的。遇到的所有人都很温和有礼貌,整体不卷年纪偏大,公司关怀好,不考虑城市的话应该会是第一选择。淘天业务组非常业务,技术不容易提升但是容易有产出,整体强度能承受分到的活也不多还挺核心的,师兄还是很nice的,往年转正待遇也挺好,小组整体年龄结构有中有小没老人,晋升空间不错。拒掉的offer里面,同花顺是做大模型部署加速的,给钱少太卷拒了;阿里国际是研究型实习生随便面的感觉面试官技术没有太懂;网易伏羲是llm+智能npc其实很有搞头,还是贪图大厂title拒了;腾讯这个最可惜,agent+游戏ai,而且在大部门实习过可以丝滑landing,腾讯招聘经常能看到校招社招广告,应该是团队扩张期,考虑到城市因素忍痛拒绝,释放一个hc给大家。==============================彩蛋:想看看牛u会做什么选择,感觉人生到了这个时间点,每个决策都会影响很大,已知和女友都是浙江人,她稳定杭州工作,计划后续杭州定居结婚。 #暑期实习# #腾讯# #阿里# #蚂蚁# #大模型# #淘天#
投递蚂蚁集团等公司10个岗位
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务