腾讯音乐娱乐集团2023校园招聘技术类岗位编程题合集

news/2024/10/30 17:22:22/

字符串操作 

题解:先变为没出现过的字符,然后在正常的变换

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 返回满足题意的最小操作数* @param str string字符串 给定字符串* @return int整型*/int minOperations(string str) {// write code heremap<int,int>mp;for(int i=0;i<str.length();i++){mp[str[i]]++;}int num=0;int res=0;for(int i=0;i<26;i++){if(!mp[i+97]){num++;}}for(int i=0;i<26;i++){if(mp[i+97]>1){if(mp[i+97]==2){res++;}else{int x=mp[i+97];if(x%2==1){int w=x/2;if(w<num){num-=w;res+=w;}else{res+=num;res+=(x-2*num-1);num=0;}}else{int w=x/2;if(w<num){num-=w;num++;res+=w;}else{res+=num;res+=(x-2*num-1);num=0;}}}}}return res;}
};

2.

带重复节点的前序中序二叉树

递归求解,前序遍历的第一个节点将中序遍历分为左右子树

/*** struct TreeNode {*	int val;*	struct TreeNode *left;*	struct TreeNode *right;*	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param preOrder int整型vector * @param inOrder int整型vector * @return TreeNode类vector*/vector<TreeNode*>res;vector<TreeNode*> dfs(vector<int>& preOrder,vector<int>& inOrder,int L1,int R1,int L2,int R2){vector<TreeNode*> res;if(L1>R1){res.push_back(nullptr);return res;}int k=preOrder[L1];for(int i=L2;i<=R2;i++){int l=i-L2;if(inOrder[i]==k){vector<TreeNode*> left=dfs(preOrder,inOrder,L1+1,L1+l,L2,i-1);vector<TreeNode*> right=dfs(preOrder,inOrder,L1+1+l,R1,i+1,R2);for(TreeNode* le:left){for(TreeNode* ri:right){TreeNode* s=new TreeNode(k);// s->val=k;s->left=le;s->right=ri;res.push_back(s);}}}}return res;}vector<TreeNode*> getBinaryTrees(vector<int>& preOrder, vector<int>& inOrder) {// write code hereint pL=preOrder.size();int iL=inOrder.size();return dfs(preOrder,inOrder,0,pL-1,0,iL-1);}
};

 

 

3.嘤嘤的新平衡树

刚开始用递归写的用的最小最大那种方法,因为中间取mod了所以答案不会对,最后参考网上答案发现用满二叉树这个性质。

/*** struct TreeNode {*	int val;*	struct TreeNode *left;*	struct TreeNode *right;*	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param tree TreeNode类 * @return int整型*/int mod=1e9+7;long long dfs(TreeNode* tree){long long res=1;if(tree==nullptr) return 0; if(tree->left==nullptr && tree->right==nullptr){return 1;}else{res+= max(dfs(tree->left),dfs(tree->right));}return res;}int getTreeSum(TreeNode* tree) {int n=dfs(tree);int res=1;for(int i=1;i<=n;i++){res=res*2%mod;}return res-1;}
};

01串修改

先0变1

在1变0

取两者之间操作的最小值

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param str string字符串 * @return int整型*/int minOperations(string str) {// write code hereint n=str.length();if(n==1) return 0;//0变1//同时更改两个0优先int num1=0;for(int i=0;i<=n-1;i++){if(str[i]=='0'){i++;num1++;}// else if(str[i]=='0')// {//     num1++;//     i++;// }}int num2=0;for(int i=0;i<=n-1;i++){if(str[i]=='1'){i++;num2++;}// else if(str[i]=='1')// {//     num2++;//     i++;// }}//1变0return min(num1,num2);}
};

 

 

5.连续子数组数量

双端滑动窗口(技巧需要计算一下在某个区间范围内的2的个数和5的个数,取最小值,即是后缀0的个个数)

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param a int整型vector * @param x int整型 * @return int整型*///滑动窗口int getSubarrayNum(vector<int>& a, int x) {// write code hereint n=a.size();vector<int>num5(n+1,0);vector<int>num2(n+1,0);int res=0;int mod=1e9+7;for(int i=0;i<n;i++){int m=a[i];while(m){int t=0;while(m%5==0&&m!=0){m=m/5;num5[i]++;t++;}while(m%2==0&&m!=0){m=m/2;num2[i]++;t++;}break;}if(i!=0){num2[i]+=num2[i-1];num5[i]+=num5[i-1];}   }int l=0;for(int i=0;i<n;i++){int x2;int x5;if(l==0){x2=num2[i];x5=num5[i];}else{x2=num2[i]-num2[l-1];x5=num5[i]-num5[l-1];}int k=min(x2,x5);if(k>=x){res+=(n-i);res=res%mod;int L1=l;while(l<=i && k>=x){l++;x2=num2[i]-num2[l-1];x5=num5[i]-num5[l-1];k=min(x2,x5);}res+=(l-L1-1)*(n-i)%mod;}}return res;}
};

 

6.好矩阵

不会(搜的答案是先确定第一行和第一列然后其他就奇偶性就确定了)

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param n int整型 * @param m int整型 * @param x int整型 * @return int整型*///  int mod = 1e9 + 7;// /*// * 封装的快速幂// */// int power(int a, long long b) {// 	int res = 1;// 	while (b) {// 		if (b & 1)res = 1LL * res * a % mod;// 		b >>= 1;// 		a = 1LL * a * a % mod;// 	}// 	return res;// }// int numsOfGoodMatrix(int n, int m, int x) {// 	return 1LL * power(x, n + m - 1) * power(x / 2, 1LL * (n - 1) * (m - 1)) % mod;// }int mod=1e9+7;int ksm(int x,long long h){long long res=1;while(h>0){if(h&1){res=res*x;res=res%mod;// cout<<res<<endl;}x=1LL*x*x%mod;h>>=1;}return res%mod;}int numsOfGoodMatrix(int n, int m, int x) {// write code here//快速幂return 1LL*ksm(x,m+n-1)*ksm(x/2,1LL*(m-1)*(n-1))%mod;}
};


http://www.ppmy.cn/news/815425.html

相关文章

智慧交通产品解决方案-交通地理信息平台

智慧交通产品解决方案-交通地理信息平台 智慧交通产品解决方案-交通地理信息平台1&#xff09;智能交通管控平台2&#xff09;交通地理信息平台3&#xff09;交通信息服务平台4&#xff09;交通运维管理平台5&#xff09;交通信息资源平台 交通地理信息平台平台概述平台特点1&a…

车载小程序为何能成为智能汽车的技术发展趋势

随着社会的发展和人们生活水平的提高&#xff0c;汽车已经不再是纯粹的交通工具&#xff0c;而是成为了人们的第三方空间。人们不仅仅需要一辆车来满足交通需求&#xff0c;更需要一辆智能化的车来提供更多的服务和便利。因此&#xff0c;汽车制造商也开始注重汽车的智能化升级…

​智能交通简介——效益和实例

智能交通和智能城市交通管理正在彻底改变城市处理流动性和应急反应的方式&#xff0c;同时减少城市街道的拥堵。如何实现&#xff1f;通过传感器、先进的通信技术、自动化和高速网络。 从一个地方移动到另一个地方的艺术和科学是我们生活中固有的一部分——不仅仅是今天&#x…

物联网下的智慧交通系统

交通运输业作为国民经济的基础行业涉及面广&#xff0c;与人们的生活密切相关&#xff0c;而这也将成为物联网的主战场。交通运输效率的提升&#xff0c;将很大程度上提高城市的运行效率&#xff0c;大规模提升经济效益。 物联网在城市交通方面的应用将城市交通组成要素&#x…

人工智能实战项目:智慧交通

一、项目简介 汽车的日益普及在给人们带来极大便利的同时&#xff0c;也导致了拥堵的交通路况&#xff0c;以及更为频发的交通事故。智能交通技术已成为推动现代技术交通技术发展的重要力量&#xff0c;智能交通不仅能够提供实时的交通路况信息&#xff0c;帮助交通管理者规划…

全国首个5G+AI的智慧交通管理示范应用成功开通!

5G来了&#xff0c;交通管理将会带来哪些变化&#xff1f; 中国移动5G网络的高传输率、高宽带、高可靠的特性&#xff0c;可为交管部门大幅度提升道路监控视频回传的质量及效率&#xff1b;而5G的边缘计算能力&#xff0c;可将人工智能算法就近部署&#xff0c;提高了交通数据处…

助力共享出行, 实现城市管理数字化和智能化

共享电单车是城市道路交通服务体系的重要补充,承担了城市公共交通的运行压力,但因其“体量大难管理”&#xff0c;行业问题不断&#xff0c;使得行业发展遭遇瓶颈。尤其是车辆易丢易盗、破坏严重、乱停乱放等乱象&#xff0c;更使得共享电单车未来生存面临诸多不确定性&#xf…

智慧公交站台:EasyCVR智能视频平台助力城市智慧交通建设

一、方案背景 随着互联网技术的高速发展&#xff0c;公交站台已经逐渐融入了新兴技术&#xff0c;在原有单一候车功能的基础上&#xff0c;公交站台现已发展为带有多种智能服务的功能。 公交站台是专门为候车人员建造的公共设施&#xff0c;为候车人员提供了候车场所。公交站…