大佬们,一道面试题求解答

在一个无序数组中找到3个数字组成数最小,要求这三个数字的索引是按序排列,例如23156这个数组,得到的结果是156,(面试时我提出用最小堆配合索引解决),面试官说用python的一种基本数据结构就可以解决,基本数据结构无非就是map,dict,set这些,我这两天想了好久没想到,求解。。

谢谢各位大佬的回答,我现在脑袋特别乱,等过两天会仔细看看各位的回答,在此谢谢各位热心的大佬了#笔试题目#
全部评论
从后往前遍历循环3次,每次维护一个递减栈 def fun(l:list): l = list(map(int, l)) if len(l) < 3: return 0 k = 3 ans = [] while k > 0: res = l[-k:] for i in range(len(l)-len(res)-1,-1,-1): if l[i] <= res[0]: res.insert(0,l[i]) ans.append(res[0]) l = res[1:] k -= 1 return ans[0] * 100 + ans[1] * 10 + ans[2] print(fun("2315628")) #128
点赞 回复 分享
发布于 2019-07-07 22:20
不知道我理解的对不对,似乎不需要什么特别的数据结构。
点赞 回复 分享
发布于 2019-07-06 16:41
Python 里应该是 list,Python 的 list 貌似既能当栈也能当双端队列吧?下面是 Java 的: //双端队列: int[] arr = {2, 3, 1, 5, 6, 2, 8}; Deque<Integer> q = new LinkedList<>(); for (int i = 0; i < arr.length; i++) { while (!q.isEmpty() && q.peekLast() > arr[i]) { q.pollLast(); } if (q.size() < 3) { q.add(arr[i]); } } for (int i = 0, len = q.size(); i < len; i++) { System.out.println(q.poll()); } //栈 int[] arr = {2, 3, 1, 5, 6}; Stack<Integer> stack = new Stack<>(); for (int i = 0; i < arr.length; i++) { while (!stack.isEmpty() && stack.peek() > arr[i]) { stack.pop(); } if (stack.size() < 3) { stack.push(arr[i]); } } //输出方便用 Collections 翻转了一下栈里的元素,用队列就不用翻转了 Collections.reverse(stack); for (int i = 0, len = stack.size(); i < len; i++) { System.out.println(stack.pop()); }
点赞 回复 分享
发布于 2019-07-06 16:29
栈就行,比前面的小就把前面的pop掉,最后保证一下是三位就行
点赞 回复 分享
发布于 2019-07-06 10:43
目测最小栈
点赞 回复 分享
发布于 2019-07-07 23:25
字符串可以,时间复杂的on,空间复杂度o1
点赞 回复 分享
发布于 2019-07-07 21:19
https://blog.csdn.net/System_out_println6/article/details/94866831,不知道写的对不对
点赞 回复 分享
发布于 2019-07-06 16:26
哪个公司的面试啊
点赞 回复 分享
发布于 2019-07-06 15:53
这是在群里问的那道题吗😂
点赞 回复 分享
发布于 2019-07-06 10:43
题目描述不清楚
点赞 回复 分享
发布于 2019-07-06 10:42
是索性按升序排列?不要求连续?
点赞 回复 分享
发布于 2019-07-06 10:34
他说的应该就是列表吧
点赞 回复 分享
发布于 2019-07-06 10:09
滑动窗口?
点赞 回复 分享
发布于 2019-07-06 10:08
当时面试官提出数据流,我第一反应就是用堆,现在简化成数组,就从python的数据结构想,其他的都不用
点赞 回复 分享
发布于 2019-07-06 09:50

相关推荐

墨西哥大灰狼:如果你的校友卤馆还在的话,他肯定会给你建议的,可是卤馆注销了@ 程序员卤馆
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
2
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务