请大佬 看下这个滴滴编程题

去重之前,40%的通过率,用set去重之后60%的通过率!!!郁闷啊!!!请问大佬们100%的通过率 是怎么做到的啊
int main()
{
vector<int> a;
    set<int,greater<int>> b;
    int x;
    int k;
    while(getchar()!='\n')
        {
        cin>>x;
        a.push_back(x);
        b.insert(x);
    }
 //   cin>>k;
    scanf("%d",&k);
  
  /* int nRet = getk(a,k);
  cout<<nRet<<endl;*/
   sort(a.rbegin(),a.rend());
    
   // if(k<=a.size())
    if(k>b.size())
    cout<<a[k-1];
    else 
        
   { for(int i=1;i<k;i++)
        {
        b.erase(b.begin());
        
    }
    cout<<*(b.begin())<<endl;
   }
    return 0;
} 

#滴滴#
全部评论
#include <iostream> #include <vector> #include <algorithm> #include <set> #include <sstream> using namespace std; int partition(vector<int> &arr, int i, int j) {     int I = i;     while (i < j)     {         while (i < j && arr[j] >= arr[I]) --j;         while (i < j && arr[i] <= arr[I]) ++i;         if (i < j) std::swap(arr[i], arr[j]);     }     std::swap(arr[i], arr[I]);     return i; } int get_least_k(vector<int> &vec_input, int k) {     int n = vec_input.size();     if (n == 0 || k <= 0 || k > n)         return 0;     int start_index = 0;     int end_index = n - 1;     int index = partition(vec_input, start_index, end_index);     while (index != k - 1) // 当分划元素的下标是k-1时,意味着前k-1个数比次数小(不大于),后边的数比次数大(不小于)     {         if (index > k - 1)             index = partition(vec_input, start_index, index - 1);         else if (index <= k - 1)             index = partition(vec_input, index + 1, end_index);     }     return vec_input[index]; } int main() {     vector<int> vec_num;     int val;     string line;     stringstream ss;     getline(cin, line);     ss.clear();     ss << line;     while (!ss.eof())     {         ss >> val;         vec_num.push_back(val);     }     int k;     cin >> k;     cout << get_least_k(vec_num,vec_num.size() + 1 - k) << endl;     return 0; }
点赞 回复 分享
发布于 2017-08-26 17:04
#include<iostream> #include<vector> using namespace std; int Partition11(vector<int> &data, int start, int end); int KLeastNumbers(vector<int> &data,int k); int main() { vector<int> a; int m; int k; while (cin >> m) { a.push_back(m); if (cin.get() == '\n') break; } cin >> k; cout << KLeastNumbers(a, k); return 0; } int KLeastNumbers(vector<int> &data, int k) { if (data.size()==0|| k <= 0) return -1; int len = data.size(); int index = Partition11(data, 0, len - 1); while (index != k - 1) { if (index > k - 1) index = Partition11(data, 0, index - 1); if (index < k - 1) index = Partition11(data, index + 1, len - 1); } return data[index]; } int Partition11(vector<int> &data, int start, int end) { int index = data[start]; int i = start + 1; int j = end; while (true) { while (data[i] > index) { i++; if (i == end) break; } while (index >= data[j]) { j--; if (j == start) break; } if (i >= j) break; swap(data[i], data[j]); } swap(data[start], data[j]); return j; }
点赞 回复 分享
发布于 2017-08-26 17:21
作者:liantieyu 链接:https://www.nowcoder.com/discuss/35115 来源:牛客网 我之前用C++写的答案,不能完全AC,怎么也解决不了。 后来一怒之下换了python,同样最基本的思路,逆排序,取第k位,就100%了。 感觉还是自己C++太菜,或者题目用c++写有坑?? 附上我的python代码: nums = [int(x) for x in input().strip().split()] k = [int(x) for x in input().strip().split()][0] nums = sorted(nums, reverse=True) print(nums)
点赞 回复 分享
发布于 2017-08-26 17:05
直接用STL的排序sort返回第k大的数,AC了
点赞 回复 分享
发布于 2017-08-26 18:10
感觉可以直接用c++ STL中的nth_element,不知道算不算犯规
点赞 回复 分享
发布于 2017-08-26 17:53
Array.sort(arr); 然后直接输出arr[arr.length+1-k];    暴力AC结束!
点赞 回复 分享
发布于 2017-08-26 17:43
就sort再输出k-1索引的数就AC了啊
点赞 回复 分享
发布于 2017-08-26 17:29
为什么都在讨论用什么排序,感觉sort就可以了啊。。。。
点赞 回复 分享
发布于 2017-08-26 17:13
直接冒泡排序,没做优化。 要优化的话估计改一下快排就可以。
点赞 回复 分享
发布于 2017-08-26 17:12
乱写的就通过了,感觉你们写的很高大上
点赞 回复 分享
发布于 2017-08-26 17:06
不能去重
点赞 回复 分享
发布于 2017-08-26 17:03
去重之前,40%的通过率,去重之后60%的通过率!!!郁闷啊
点赞 回复 分享
发布于 2017-08-26 16:59

相关推荐

从大一开始就开始学习Java,一路走来真的不算容易,每次面试都被压力,不过这次终于达成了自己的一大心愿!时间线和面经:8.17-投递9.1-一面实习+项目拷打看门狗机制讲一下redis加锁解锁的本身操作是什么Lua脚本是干什么的udp和tcp讲一下流量控制讲一下令牌桶算法说一下大端和小端是什么线程和协程有什么区别怎么切换协程切换的时候具体做了什么对于程序来说,你刚才提到的保存和恢复现场,这个现场有哪些信息udp优势现在有一个客户端和服务端,要实现TCP的通信,我们的代码要怎么写服务器怎么感知有新的连接怎么处理多个客户端的请求连接TCP怎么处理粘包和分包现在有两个文件,然后每个文件都有一亿条URL,每个的长度都很长,要怎么快速查找这两个文件共有的URLHashmap底层说一下怎么尽量提升插入和查询的效率如果要查找快,查询快,还有解决非空的问题,怎么做LoadingCache了解吗手撕:堆排序9.4-二面部门的leader,超级压力面拷打实习+项目,被喷完全没东西类的加载到垃圾回收整个底层原理讲一遍类加载谁来执行类加载器是什么东西,和进程的关系Java虚拟机是什么东西,和进程的关系如果我们要执行hello&nbsp;world,那虚拟机干了什么呢谁把字节码翻译成机器码,操作时机是什么Java虚拟机是一个执行单元吗Java虚拟机和操作系统的关系到底什么,假如我是个完全不懂技术的人,举例说明让我明白一个操作系统有两个Java程序的话,有几个虚拟机有没有单独的JVM进程存在启动一个hello&nbsp;world编译的时候,有几个进程JVM什么时候启动比如执行一条Java命令的时候对应一个进程,然后这个JVM虚拟机到底是不是在这个进程里面,还是说要先启动一个JVM虚拟机的进程垃圾回收机制的时机能手动触发垃圾回收吗垃圾回收会抢占业务代码的CPU吗垃圾回收算法简单说说垃圾回收机制的stop&nbsp;the&nbsp;world存在于哪些时机垃圾回收中的计算Region的时候怎么和业务代码并行执行假如只有一个线程,怎么实现并行Java为什么要这么实现Java效率比C++慢很多,那为什么还要这样实现Java虚拟机到底是什么形式存在的说一下Java和C++的区别还有你对Java设计理念的理解无手撕面试结束的时候,我真的汗流浃背了,面试官还和我道歉,说他是故意压力面想看看我的反应的,还对我给予了高度评价:我当面试官这么多年,你是我见过最好的一个9.9-三面临时通知的加面,就问了三十分钟项目9.11-hr面问过往经历,未来计划,想从腾讯实习中得到什么?当场告知leader十分满意我,所以直接ochr面完一分钟官网流程变成录用评估中,30分钟后mt加微信告知offer正在审批9.15-offer这一次腾讯面试体验真的不错,每个面试官能感觉到专业能力很强,反馈很足,比起隔壁某节真是好太多以后就是鹅孝子了
三本咋了:当面试官这么多年你是我见过的最好的一个
你面试被问到过哪些不会的...
点赞 评论 收藏
分享
北斗导航Compas...:.......牛客上的通过初筛屁用没有,纯自我感动
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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