滴滴笔试

第二题用冒泡排序复杂度太高了?#滴滴#
全部评论
快排+二分,写完通过率0,怒之!Arrays.sort提交
点赞 回复 分享
发布于 2017-08-26 17:09
直接一个Arrays.Sort搞定
点赞 回复 分享
发布于 2017-08-26 22:38
有归并排序做法吗?
点赞 回复 分享
发布于 2017-08-26 22:14
搜索bfprt算法
点赞 回复 分享
发布于 2017-08-26 22:12
改进的快排可以做到O(n),冒泡怎么都是平方级
点赞 回复 分享
发布于 2017-08-26 22:07
STL里面的nth_element和partial_sort均可以高效解决此问题,最高效的是nth_element,基本思想是快速排序。具体可以参考本人博客:http://blog.csdn.net/bxw1992/article/details/76695461 void nth_element(vector<int> &vec, int num) 将最小(或最大)的num个数放在数组的开始处。注意num个数是无序的。 主要是利用快速排序的切分操作,源码针对枢轴的选取了优化措施(取待处理区间首、中间、尾3个值中的中间值作为枢轴,防止切分操作退化),这里为了简化,没有对枢轴的选取进行优化。 根据切分函数的返回值,判断是否达到了找出了num个满足要求的数,如果不满足,判断下一处理区间。 #include<iostream> #include<vector> using namespace std; void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; } int partition(vector<int> &vec,int low,int hi) { int mid = (hi - low) / 2 + low; int pivot = vec[low]; int i = low + 1; int j = hi; while (true) { while (i < hi && vec[i] < pivot) i++; while (j>low && vec[j]>pivot) j--; if (i >= j) break; swap(vec[i], vec[j]); i++; j--; } swap(vec[low],vec[j]); return j; } void nth_element(vector<int> &vec, int num) { int len = vec.size(); int low = 0; int hi = len - 1; while (low<hi) { int j = partition(vec,low,hi); if (j == num - 1) return; else if (j < num - 1) low = j+1; else hi = j - 1; } } void myprint(const vector<int> a) { for (int i = 0; i < a.size(); i++) { cout << a[i] << " "; } cout << endl; } int main() { vector<int> data = { 11,5, 4, 7, 6, 8, 1,10 }; myprint(data); nth_element(data,2); myprint(data); system("pause"); return 0; }
点赞 回复 分享
发布于 2017-08-26 22:06
不超过10行的python就能搞定。。。
点赞 回复 分享
发布于 2017-08-26 22:06
冒泡,排序k次,通过了啊,为毛说太低级
点赞 回复 分享
发布于 2017-08-26 17:22
维护一个最小堆啊
点赞 回复 分享
发布于 2017-08-26 17:08
第二题直接用sort通过率只有80%,无奈之下用了最小堆;结果写完之后stl中有接口可以直接用
点赞 回复 分享
发布于 2017-08-26 17:06
第二题不是经典堆排序么?
点赞 回复 分享
发布于 2017-08-26 17:06
冒泡。。也太低级了吧。
点赞 回复 分享
发布于 2017-08-26 17:05
最好快排思想,然后Arrays.sort
点赞 回复 分享
发布于 2017-08-26 17:05

相关推荐

1.&nbsp;面评重要性:腾讯/字节&nbsp;&gt;&nbsp;想去的独角兽小厂&nbsp;&gt;&nbsp;其他大厂(度和手我认为是相对不怎么看的)2.&nbsp;还算有复活机会的公司(难易程度我觉得是据面评定的,所以不做偏差直觉分享,差距也不大):度、节、手、鹅(虽然我没复活过)3.&nbsp;鹅和节我是吃了很大面评的亏,几乎没怎么面过。节还稍微可以说下,首先节是****和官网都能投的,其次后面懂车帝面评好像拆了。4.&nbsp;内推挺关键的一些厂,就算被白吃&nbsp;+&nbsp;不帮你跟流程也建议找内推的,推荐认真研究怎么推和组内直推:pdd、腾讯5.&nbsp;看重测评的一些公司:讯飞、阿里、携程、京东、去哪儿(当然想去的大厂都建议认真做,除了携程别的我没见要春招重做的,只做一次还是能接受吧)6.&nbsp;要认真写在线简历的厂:应该只有美团?有的面试官会两个都看,但是有些面试官只看在线,不看附件。不过别的也得写得差不多。1.&nbsp;团:三个志愿,顺序流转。一志愿的好处是2.&nbsp;鹅:暑期开始内推和部门就锁了,春招部门才解开一次,谨慎填,谨慎找内推3.&nbsp;度、节:个人觉得官网摆设性比较强,约面都是****上的。可能是个人来说比较难在官网这种大池子中被挑出来。这两家还有一个特点,好像啥时候都有hc。除非你是特别强的,不然建议准备好再投。当然投得早也复活机会多,前提是维护好面评。不过度没那么看面评,至少实习一定是,我唯一大二面试没黑面评的就是度了,也是我面得最多的大厂。4.&nbsp;pdd、滴滴:挂一次这个批次就投不进了,前者内推会更关键一点,后者更重要的是准备好再投。5.&nbsp;b、书、mhy、dewu:hc超少,尽早投动态更新,想到什么写什么--我当时就没人跟我说这些啊,不过也不奢求有人跟我说了关键还是得主动去问,多交一些上一届的朋友就很有帮助我这种砂币社恐,信息闭塞也是自找的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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