首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-28 15:10
OPPO_软件开发部_IT开发工程师(准入职员工)
OPPO暑期实习内推
最近好多小伙伴问我在OPPO当管培生咋样,请攻击我最薄弱的地方~ 💼轮岗实践,技能拉满 管培生要在不同岗位轮岗,像我现在在门店,从产品知识、销售技巧到门店运营都得学。和顾客交流,帮他们选到合适的OPPO 设备,成就感拉满!也更懂消费者需求,对以后做策略超有帮助~ 👥大佬带飞,成长特快 公司给配了导师,从业务到职业规划,手把手教。遇到难题,随时能找他们取经,能少走好多弯路!还有各种培训、分享会,行业前沿知识、OPPO 黑科技,听得人热血沸腾,感觉自己在飞速进步~ ✨氛围超棒,青春感十足 OPPO 的小伙伴都很年轻有活力,大家一起头脑风暴、搞活动,像最近推广 Reno14 系列,团队齐心协力,...
OPPO成长空间 544人发布
点赞
评论
收藏
分享
07-07 12:47
门头沟学院 Java
好绝望,
轻度地贫被卡入职,25届应该这么办
码农索隆:
竟然还真有卡体检报告的
点赞
评论
收藏
分享
07-31 09:25
算法工程师
求大佬看看 这简历真的很拉么
RT 本人从7月初开始投 简历改了56次 但还是石沉大海 最开始的项目就是YOLO和一个嵌入式的项目没人回还觉得正常 现在改了很多 为什么还是没消息呢 投的大都是AI岗 双非硕
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7177
2
...
虾皮秋招一面
3029
3
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2503
4
...
百度提前批 三面
2340
5
...
小鹏offer
1461
6
...
被猿辅导挂了简历,但我想说...
1374
7
...
虾皮一面凉经
1323
8
...
最强本科✌
1205
9
...
上班一周,工资还没拿,先欠公司两千
1202
10
...
大学四年,我感觉我像个“孤勇者”
1113
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29356次浏览
818人参与
#
秋招被确诊为……
#
164034次浏览
751人参与
#
中兴秋招
#
205583次浏览
2294人参与
#
工作中哪个瞬间让你想离职
#
63557次浏览
569人参与
#
你最希望上岸的公司是?
#
135168次浏览
705人参与
#
和同事相处最忌讳的是__
#
24303次浏览
244人参与
#
25届网易互娱暑实进度
#
78406次浏览
702人参与
#
虾皮求职进展汇总
#
249369次浏览
1855人参与
#
投格力的你,拿到offer了吗?
#
86723次浏览
583人参与
#
2022毕业即失业取暖地
#
102702次浏览
662人参与
#
2022毕业生求职现身说法
#
89276次浏览
700人参与
#
秋招OC许愿
#
327793次浏览
2450人参与
#
你最近一次加班是什么时候?
#
70991次浏览
350人参与
#
26届的你,投了哪些公司?
#
44843次浏览
494人参与
#
你的秋招第一面感觉怎么样
#
76887次浏览
591人参与
#
柠檬微趣工作体验
#
6717次浏览
40人参与
#
你遇到最难的面试题目是_
#
16579次浏览
201人参与
#
我对___祛魅了
#
48266次浏览
438人参与
#
地平线求职进展汇总
#
52645次浏览
369人参与
#
研究所VS国企,该如何选
#
194817次浏览
1819人参与
#
如果校招重来我最想改变的是
#
271885次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务