爪哇2博客
爪哇2博客

在数组中查找领导者

问题:

我们需要打印阵列中存在的所有领导者。如果元素大于元素的右侧,则它是领导者。
例如:

1
2
3
4
 
rr[]={14, 12, 70, 15, 99, 65, 21, 90}
这里 99 90 领导 元素
 

解:

解决方案1:

使用两个循环。外循环遍历数组元素,而内循环则检查数组的正确元素。如果当前元素大于正确元素,则为领导者。
爪哇代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
上市 静态的 虚空 findLeadersInAnArrayBruteForce(整型 rr[])
{
系统..打印(“使用蛮力寻找领导者:”);
对于 (整型 i = 0; i < rr.长度; i++) {
布尔值 isLeader=真正;
对于 (整型 j = i+1; j < rr.长度; j++) {
如果(rr[i] <= rr[j])
{
isLeader=;
打破;
}
}
如果(isLeader)
系统..打印(rr[i]+);
}
}
 

时间复杂度:o(N ^ 2)

解决方案2:

让我们找到更多优化的解决方案
我们将使用最右边的元素始终是领导者的属性。

  • 我们将从最右边的元素开始并跟踪最大值。
  • 每当我们获得新的最大值时,该元素就是领导者。

爪哇代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
上市 静态的 虚空 findLeadersInAnArray(整型 rr[])
{
  系统..打印(“寻找领导者:”);
  整型 rightMax=rr[rr.长度-1];
  //最右边永远是领导者
  系统..打印(rightMax+);
  对于 (整型 i = rr.长度-2; i>=0; i-) {
   如果(rr[i] > rightMax)
   {
    rightMax=rr[i];
    系统..打印(+rightMax);
   }
  }
}
 

时间复杂度:o(N)

爪哇程序在数组中查找领导者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
组织.Arpit.爪哇2blog;
 
上市 FindLeadersInArrayMain {
 
上市 静态的 虚空 主要([] args) {
  整型 rr[]={14, 12, 70, 15, 99, 65, 21, 90};
  findLeadersInAnArrayBruteForce(rr);
  系统..打印(“ n ==================”);
  findLeadersInAnArray(rr);
}
 
上市 静态的 虚空 findLeadersInAnArrayBruteForce(整型 rr[])
{
  系统..打印(“使用蛮力寻找领导者:”);
  对于 (整型 i = 0; i < rr.长度; i++) {
   布尔值 isLeader=真正;
   对于 (整型 j = i+1; j < rr.长度; j++) {
    如果(rr[i] <= rr[j])
    {
     isLeader=;
     打破;
    }    
   }
   如果(isLeader)
    系统..打印(rr[i]+);
  }
}
 
上市 静态的 虚空 findLeadersInAnArray(整型 rr[])
{
  系统..打印(“寻找领导者:”);
  整型 rightMax=rr[rr.长度-1];
  //最右边永远是领导者
  系统..打印(rightMax+);
  对于 (整型 i = rr.长度-2; i>=0; i-) {
   如果(rr[i] > rightMax)
   {
    rightMax=rr[i];
    系统..打印(+rightMax);
   }
  }
}
 
}
 

当您运行上述程序时,将获得以下输出:

1
2
3
4
5
6
7
 
寻找 领导者 一个 数组 使用 蛮力
99 90
==================
寻找 领导者 一个 数组 :
90  99
 


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 3月28日

    对0、1和2的数组进行排序

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何对0、1和2s的数组进行排序。我们已经看到了有关对数组中的0s和1s进行排序的文章。问题给定一个包含零的数组,[…]

  • 3月04

    通过跳转检查是否有可能到达给定数组的末尾

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。问题给定一个具有正整数作为元素的数组,该数组指示可以从数组中任何位置进行跳转的最大长度。检查是否可以[…]

  • 2月17日

    检查数组元素是否连续

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何检查数组元素是否连续。问题给定一个数组,我们需要检查数组是否包含连续的元素。例如:输入:array [] = {5,3,4,[…]

  • 11月1日

    在数组中找到局部最小值

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何在数组中找到局部最小值。问题如果一个元素小于其相邻元素,则它是局部最小值。 整型 [] rr = {10,5,3,[…]

  • 10月22日

    爪哇中的滑动窗口最大值

    在这篇文章中,我们将看到有关Java问题中滑动窗口最大值的问题给定一个整数数组和一个整数k,请从所有大小为K的连续子数组中找到max的元素。例如:Input:int [] rr = {2 ,6,-1,2,4,1,-6,5} 整型 k = 3输出:[[]的每个子数组分别为6,6,4,4,4,5,5…]

  • 10月20日

    计算排序数组中每个元素的出现次数(或频率)

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何计算已排序数组中每个元素的出现次数(或出现频率)问题给定一个包含重复项的整数排序数组。找出每个[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客