首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
上岸的跳板
2017-08-23 23:02
东南大学 Java
关注
已关注
取消关注
昨晚58同城的编程题关于打印前面比当前值小且下标最大?
有n(n>0)个元素的正整型数组a,打印每个数组元素前面值比他小并且下标最大的元素,如果没有则打印-1,请使用尽可能高效的方法来实现。举例:数组a为[3,6,1,4,2,3,7,5,8], 则打印[-1,3,-1,1,1,2,3,3,5]。大家有没有比O(n2)(
就是遍历数组,再遍历当前数的前面值的方法
)更好的方法啊?
提示
全部评论
推荐
最新
楼层
akalaka
中国科学院大学 C++
从后往前,维持一个递减的单调栈,每次元素出栈,该位置该打印的值也就确定了,时间复杂度O(n)
点赞
回复
分享
发布于 2017-08-23 23:39
上岸的跳板
楼主
东南大学 Java
谢谢各位大神的出谋划策,尤其是
@特仑苏先生
,下面我给出代码: import java.util.Stack; public class BiWoXiaoZuiJin { public static int[] findArray(int[] array) { int[] res = new int[array.length]; Stack<Integer> inc = new Stack<>(); for(int i=0; i<array.length; i++) { while(!inc.isEmpty()) { if(inc.peek() >= array[i]) { inc.pop(); } else { res[i] = inc.peek(); inc.push(array[i]); break; } } if(inc.isEmpty()) { inc.push(array[i]); res[i] = -1; } } return res; } public static void main(String[] args) { int[] arr = {3,6,1,4,2,3,7,5,8}; int[] res = findArray(arr); for(int i=0; i<res.length; i++) { System.out.print(res[i] +" "); } } }
点赞
回复
分享
发布于 2017-08-24 15:17
改个名字解解毒...
西安邮电大学
数组a为[3,6,1,4,2,3,7,5,8], 则打印[-1,3,-1,1,1,2,3,3,5]。单调栈:array = [] array必须从小到大有序保存结果:res = []1.3入栈 array = [3] res[0] = -12.6入栈 array = [3,6] res[1] = 33.1入栈 3,6出栈 array = [1], res[2]= -14.4入栈 array = [1,4], res[3] = 15.2入栈 4出栈 array = [1,2], res[4] = 16.3入栈 array = [1,2,3] res[5] = 27.7入栈 array = [1,2,3,7] res[6] = 38.5入栈 7出栈 array = [1,2,3,5] res[7] = 39.8入栈 array = [1,2,3,5,8] res[8] = 5res = [-1, 3, -1, 1, 1, 2, 3, 3, 5]
点赞
回复
分享
发布于 2017-08-24 10:41
醉阳舞
长安大学 Java
我的思路从后往前遍历,i,j下标,i--,j先标到最后一个。如果值i小于值j,i和j之间的全部设为值j,将i赋给j。如果i等于0时j不等于0,将j处值设为-1,把j赋给i,j--,i--。手机打好麻烦。。。
点赞
回复
分享
发布于 2017-08-24 03:28
*nana*
天津理工大学 Java
import java.util.Scanner; //58题 我考虑在遍历每一个数的时候把前面最小值标记出来,如果现在遍历的数比标记的最小值还是小,那就直接输出-1,这样只有在前面存在比当前数小的情况下才会逆向遍历前面的数 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[] = new int[n]; int brr[] = new int[n]; for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } brr[0] = -1; int min=arr[0]; for (int i = 1; i < arr.length; i++) { if(arr[i]<arr[i-1]){ min=arr[i]; } if(arr[i]<min){ brr[i] = -1; continue; } for (int j = i; j >= 0; j--) { if (arr[i] > arr[j]) { brr[i] = arr[j]; break; } else { brr[i] = -1; } } } for (int i = 0; i < brr.length; i++) { System.out.print(brr[i] + " "); } } }
点赞
回复
分享
发布于 2017-08-24 23:54
LaGuZai
左家垅皇家男子职业技术学院 Java
单调栈,楼上已经说了,左神的算法课也讲了,时间复杂度为O(n)
点赞
回复
分享
发布于 2017-08-24 10:59
你说我很好
武汉大学 Java
用一个栈 O(n)即可解决 找到进栈出栈的规律 自己试一试 左神讲过这个题
点赞
回复
分享
发布于 2017-08-24 08:19
lovesick
浙江大学 C++
单调栈
点赞
回复
分享
发布于 2017-08-24 00:28
牛妹啊
京东集团_软件开发工程师
看看大神
点赞
回复
分享
发布于 2017-08-24 00:20
小王1024
西安财经学院 算法工程师
#include<iostream> #include<vector> #include<iterator> #include<algorithm> using namespace std; void Fun(vector<int> &vec) { int len=vec.size(); for(int i=len-1;i>0;--i) { if(vec[i]>vec[i-1]) { int tmp=vec[i]-vec[i-1]; for(int j=i;j>=0;--j) { int s=vec[i]-vec[j]; if(tmp<s) { tmp=s; } } vec[i]=tmp; } else { vec[i]=-1; } } vec[0]=-1; } int main() { vector<int> vec; int n; cin>>n; for(int i=0;i<n;++i) { int tmp; cin>>tmp; vec.push_back(tmp); } Fun(vec); copy(vec.begin(),vec.end(),ostream_iterator<int>(cout," ")); return 0; }
点赞
回复
分享
发布于 2017-08-23 23:40
darling_mandy
南京大学 Java
设两个游标min和max,分别指向当前位置之前最小和最大的数,然后再判断进行打印
点赞
回复
分享
发布于 2017-08-23 23:26
及时行乐z
桂林电子科技大学 Java
我能想到的就是从后往前遍历,最好的时间复杂度是O(n),最坏的是O(n^2),不太稳定。
点赞
回复
分享
发布于 2017-08-23 23:12
暂无评论,快来抢首评~
相关推荐
01-15 22:52
武汉大学 Java
20260114【携程】面试算法真题(共1题)
题目1:0替换为1的可行性判断
查看1道真题和解析
点赞
评论
收藏
分享
01-14 11:34
门头沟学院 广告设计
你的二次元老婆可能在悄悄变丑
搞理财的都知道,最近AI应用板块大涨,AI又成了资本的香饽饽(虽然一直都是),但是今天我要说一下AI应用对审美降级的影响。虽然牛客基本都是大老爷们不咋关注这些,但是,当你发现,你的二次元老婆从精美细腻的定制美人变成油腻高光流水线的AI产品,想跟老婆互动没变便宜还要额外充钱。AI应用作用于美术层面,最显著的特征是成本降低,曾经要付给画师、设计师工资稿酬,现在只需要AI生图软件启动,有点审美的老板会让画师在AI作图的基础上修改调整,而更多的老板选择砍掉设计岗位,让AI代替画师、设计师。成本降低了,但消费者的消费成本并没有降低,AI生图从22年就开始了,但相关的物品售价有降低吗?当大街小巷的广告被假...
AI让你的思考变深了还是...
点赞
评论
收藏
分享
01-09 01:04
东莞城市学院 机械结构工程师
月休两天
月休两天能坚持住的都是怎样的牛人😢
饿魔:
单休目标?
点赞
评论
收藏
分享
2025-12-22 16:08
深圳技术大学 Python
人生第一次面试结束了
1. 做自我介绍,并确认两个项目是个人独立开发还是学校项目?2. 从产品视角说明旅行规划助手项目的定位、能力、技术方案及需求解决办法?3. 追问1:旅行规划助手项目是否经过体验,效果如何,存在哪些问题及后续改进方向?4. 追问2:以“深圳玩三天预算3500元”为例,智能体能否满足需求,如何控制价格及响应时间?5. 知识库答疑助手项目是否为比赛,介绍技术方案(如RAG、混合检索、微调等)?6. 追问1:知识库答疑助手项目微调数据集的设计方法及测试集情况?7. 追问2:知识库答疑助手项目最终准确率及采用混合检索的原因?8. 追问3:知识库答疑助手项目向量模型和微调模型的选择依据及部署方案?9. 是否使用过多模态处理方式,图片识别的准确性及实现方法?10. 追问1:是否使用过Coze、Dify、N8N等低代码平台及使用程度?11. 确认实习时间(一周5天、持续6个月、1月初到岗的具体日期)?反问1:具体产品实习生进去负责哪个模块答:智能体 Demo 搭建、测试打标反问2:车载主要是负责端侧还是云端答:团队主要是负责云端,不涉及端侧
秋招,不懂就问
点赞
评论
收藏
分享
01-14 14:57
中国矿业大学 嵌入式软件工程师
替同学问下如何选择就业去向
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度日常实习后端二面凉经
2122
2
...
十天速通前端实习虾皮offer/面试总结
1785
3
...
重生之我回到暑期实习投递前一个月!
1684
4
...
27届字节一面
1583
5
...
27前端鼠鼠美团一二面
1293
6
...
哈啰正职对实习生非常mean
1208
7
...
小红书日常实习前端一面面经
1202
8
...
26届java春招简历拷打
1085
9
...
组长说外包不能吃零食
1075
10
...
嵌入式新机会:机器人行业
1040
创作者周榜
更多
正在热议
更多
#
秋招有哪些公司要求提前实习
#
100120次浏览
517人参与
#
你秋招最后悔的选择
#
80084次浏览
362人参与
#
打工人锐评公司红黑榜
#
190530次浏览
1048人参与
#
工作压力大怎么缓解
#
131917次浏览
1132人参与
#
运营面经
#
151842次浏览
1334人参与
#
我在牛客求捞
#
101211次浏览
311人参与
#
被说“做题家”,你的反应是_____?
#
4005次浏览
121人参与
#
运营商笔面经互助
#
195089次浏览
1800人参与
#
AI“智障”时刻
#
21712次浏览
113人参与
#
你都见过什么样的草台班子?
#
13428次浏览
98人参与
#
26届的你,投了哪些公司?
#
248618次浏览
1667人参与
#
Prompt分享
#
4332次浏览
117人参与
#
我心目中的理想工作是这样的
#
92794次浏览
901人参与
#
AI了,我在打一种很新的工
#
128755次浏览
1317人参与
#
找实习记录
#
49436次浏览
655人参与
#
工作压力大,你会干什么?
#
17083次浏览
442人参与
#
双非本科的出路是什么?
#
201398次浏览
1536人参与
#
担心入职之后被发现很菜怎么办
#
275376次浏览
1174人参与
#
AI让你的思考变深了还是变浅了?
#
7128次浏览
179人参与
#
实习转正进行时
#
135930次浏览
867人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务