Redian新闻
>
请问 如何找无序数组里第2大的数
avatar
请问 如何找无序数组里第2大的数# JobHunting - 待字闺中
c*z
1
time O(n),大牛来写个简单的版本,看了些版本,比较杂
avatar
A*i
2
先找出第一大的标记出来然后再遍历一遍跳过第一大就能找到第二大了
avatar
m*a
3
你把数组撸两遍不就行了么??
avatar
e*i
4
size为2的堆。。。

【在 c**z 的大作中提到】
: time O(n),大牛来写个简单的版本,看了些版本,比较杂
avatar
y*i
5
维护最大和次大2个变量,遍历一遍,不行吗?其实就是size为2的堆
avatar
q*c
6
One pass:
int find2ndLargest(int A[], int n)
{
int first = INT_MIN, second = INT_MIN;
for(int i = 0; i < n; ++i) {
if(A[i] > first) {
first = A[i];
second = first;
}
else if(A[i] > second && A[i] < first)
second = A[i];
}
return second;
}

【在 c**z 的大作中提到】
: time O(n),大牛来写个简单的版本,看了些版本,比较杂
avatar
e*i
7
second first次序错了。。。
都是A[i]了
这个是第二大的值,不确定是不是第二大的数嗯,不过这个无伤

【在 q********c 的大作中提到】
: One pass:
: int find2ndLargest(int A[], int n)
: {
: int first = INT_MIN, second = INT_MIN;
: for(int i = 0; i < n; ++i) {
: if(A[i] > first) {
: first = A[i];
: second = first;
: }
: else if(A[i] > second && A[i] < first)

avatar
c*z
8
第二大的值和第二大的数有撒区别

【在 e*****i 的大作中提到】
: second first次序错了。。。
: 都是A[i]了
: 这个是第二大的值,不确定是不是第二大的数嗯,不过这个无伤

avatar
e*i
9
两个8一个7,大概就是这个意思,不要揪我语文不好哈哈哈~

【在 c**z 的大作中提到】
: 第二大的值和第二大的数有撒区别
avatar
c*z
10
有dup怎么处理?

【在 e*****i 的大作中提到】
: second first次序错了。。。
: 都是A[i]了
: 这个是第二大的值,不确定是不是第二大的数嗯,不过这个无伤

avatar
e*i
11
那要看题意了。。。如果first不能等于second就是他的做法,如果能就都改成大于等
于号

【在 c**z 的大作中提到】
: 有dup怎么处理?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。