首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Colorful612
中国科学技术大学 C++
发布于江苏
关注
已关注
取消关注
@至今依然无offer:
字节面试一道常见的题目
最近看大家面经总有一道常见的题目: 数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},n=2533,返回2499有两个常见思路:1.暴力递归回溯,最后判断;2.贪心思想。 其中第二个思路比较有争议,看讨论大家好像也没有很统一的想法,先贴一下自己的代码 #include <iostream>#include <stack>#include <string>#include <vector>using namespace std;int n, x;//将剩余位全部设置为数组里的最大值void getmax(stack<int>& sres, int value, int count){ for(int i = 0; i < count; i++){ sres.push(value); }}//二分查找,取得小于等于传入值的最大值int getindex(vector<int>& vec, int value){ int left = 0, right = vec.size()-1, target = -1; while(left <= right){ int mid = (right-left) / 2 + left; if(vec[mid] > value){ right = mid-1; }else if(vec[mid] < value){ target = mid; left = mid + 1; } else return mid; } return target;}//主函数int helper(vector<int>& vec, string s){ stack<int>sres; int ssize = s.size(); for(int i = 0; i < ssize; i++){ int countnum = s[i] - '0'; int index = getindex(vec, countnum); //如果当前位置的值比数组的所有位置都要小,栈要进行弹出操作,相当于去回溯 if(index == -1){ int tmpcount = 0; while(!sres.empty()){ int top = sres.top(); sres.pop(); int tmpindex = getindex(vec, top-1); if(tmpindex == -1) continue; sres.push(vec[tmpindex]); tmpcount++; break; } if(sres.empty()) getmax(sres, vec[n-1], ssize-1); else getmax(sres, vec[n-1], ssize - sres.size()); break; }else if(vec[index] == countnum){ //若是相等,就加进去 sres.push(countnum); }else if(vec[index] < countnum){ //若是二分查找的值于当前值并不相等,那么把二分查找的值加入,并且后面的值全取数组的最大值 sres.push(vec[index]); getmax(sres, vec[n-1],ssize-i-1); break; } } int res = 0, count = 1; while(!sres.empty()){ res += sres.top() * count; count *= 10; sres.pop(); } return res;}int main() { cin >> n; vector<int> vec(n); for(int i = 0; i < n; i++) cin >> vec[i]; cin >> x; sort(vec.begin(), vec.end()); //传入的值是x-1 std::cout << helper(vec, to_string(x-1)) << std::endl; return 0;}我觉得这个代码是正确的,希望大家可以指正一下, 我自己编造的例子基本都过了。
点赞 12
评论 9
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-08 21:57
门头沟学院 嵌入式软件工程师
岚图嵌入式面经
两个面试官,面了半小时,无手撕,逮住项目使劲问 1.MCU与FPGA通信方式 2.进程和线程? 3.中断上下文和进程上下文? 4.中断中可以运行sleep函数吗?如果真调用了sleep会发生什么 5.区分内核态和用户态的作用? 6.linux中用户态执行系统调用后切换到内核态的过程 7.虚拟内存和物理内存?MPU和MMU 8.页表&cache?用户内核态切换时TLB/Cache会消失吗? 9.DMA 10.智能指针 11.反问
查看10道真题和解析
点赞
评论
收藏
分享
10-03 08:45
哈尔滨工业大学
大疆公司面试真题
以下是大疆公司最近几年的部分面试题,八股精(*************)对题目进行了分类和整理。计算机网络题目请介绍数据链路层的VLAN (2024年)同进程多线程可以使用socket通讯吗 (2025年)请解释计算机网络中“协议”的相关概念 (2024年)如果TCP已经建立好连接,使用TCP长连接和使用UDP发消息,差别大吗 (2024年)请解释TCP的粘包、拆包现象以及对应的解决方法 (2025年)【更多:6道题目上八股精网站查看】数据结构和算法题目编写一个算法,实现链表的有序合并,不能使用sort方法,考虑利用重载比较器和优先队列,同时要注意输入的处理,特别是换行符的处理 (2023年)...
30万真题,揭秘面试官最...
点赞
评论
收藏
分享
09-11 17:25
浙江工商大学 游戏测试
有人知道这是什么情况吗
家人们 这是已经寄了的意思吗
点赞
评论
收藏
分享
08-20 17:37
海南经贸职业技术学院 招聘专员
谁敢给我offer
用微笑面对困难:
这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞
评论
收藏
分享
10-08 21:58
门头沟学院 嵌入式工程师
睿创微纳嵌入式HR面面经
1.自我介绍 2.比赛经历介绍 3.对睿创微纳的了解 4.问学习或项目中遇到的最大困难 5.在实习期间和在学校做项目的感受有什么不同 6.是否保研 7.有无对象 8.个人的性格是怎样的 9.工作地选择 10.反问
查看9道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
JVM调优
1.1W
2
...
前端面试,八股怎么准备?(附速通版)
6350
3
...
恒生电子笔试交流
5817
4
...
如何委婉地拒绝offer
3977
5
...
双非秋招记录(下)
3575
6
...
国庆有感 测开劝退
3471
7
...
选对公司跟选对人是一样的
3175
8
...
中国电信笔试交流
3040
9
...
分享一个很友好的公司
2715
10
...
HR面,到底该准备些啥(附核心问题回答思路)
2696
创作者周榜
更多
正在热议
更多
#
国庆后,我的返工状态
#
12392次浏览
63人参与
#
校招求职有谈薪空间吗
#
170896次浏览
2157人参与
#
爱玛科技集团求职进展汇总
#
13844次浏览
136人参与
#
一觉醒来,穿越回国庆前
#
21814次浏览
87人参与
#
找工作前vs找工作后的心路变化
#
23049次浏览
185人参与
#
职场中你干过哪些“蠢”事
#
121243次浏览
687人参与
#
深信服秋招来了
#
277129次浏览
2910人参与
#
租房前辈的忠告
#
254206次浏览
7088人参与
#
26届秋招投递记录
#
41168次浏览
475人参与
#
电信求职进展汇总
#
17135次浏览
112人参与
#
非技术岗是怎么找实习的
#
253987次浏览
2519人参与
#
央国企投递记录
#
118515次浏览
1505人参与
#
产品人专业大盘点
#
57344次浏览
300人参与
#
腾讯音乐求职进展汇总
#
129982次浏览
984人参与
#
找工作有哪些冷知识
#
156356次浏览
2437人参与
#
实习生应该准时下班吗
#
286873次浏览
1574人参与
#
滴!实习打卡
#
699507次浏览
6624人参与
#
面试被问“你的缺点是什么?”怎么答
#
147911次浏览
1783人参与
#
安利/避雷我的岗位
#
628064次浏览
5302人参与
#
教师节,你送祝福了吗
#
7380次浏览
55人参与
#
薪资爆料
#
165746次浏览
1379人参与
#
如果不工作真的会快乐吗
#
159658次浏览
1201人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务