Java查找数组中的领导者
时间:2020-02-23 14:34:10 来源:igfitidea点击:
问题:
我们需要打印阵列中存在的所有领导者。
如果一个元素大于它右边的所有元素,那么它就是领导者。
例如:
arr[]={14, 12, 70, 15, 99, 65, 21, 90}
Here 99 and 90 are leader elements
解决方案:
解决方案1:
使用两个循环。
外循环迭代数组元素和内循环以检查阵列的右键。
如果当前元素大于右元素,而不是它是领导者。
Java代码:
public static void findLeadersInAnArrayBruteForce(int arr[])
{
System.out.println("Finding leaders in an array using brute force : ");
for (int i = 0; i < arr.length; i++) {
boolean isLeader=true;
for (int j = i+1; j < arr.length; j++) {
if(arr[i] <= arr[j])
{
isLeader=false;
break;
}
}
if(isLeader)
System.out.print(arr[i]+" ");
}
}
时间复杂性:o(n ^ 2)
解决方案2:
让我们找到更优化的解决方案,我们将使用最右边元素的属性永远是一个领导者。
- 我们将从最右边的元素和轨道开始。
- 每当我们获得新的最大时,那个元素就是一个领导者。
Java代码:
public static void findLeadersInAnArray(int arr[])
{
System.out.println("Finding leaders in an array : ");
int rightMax=arr[arr.length-1];
//Rightmost will always be a leader
System.out.print(rightMax+" ");
for (int i = arr.length-2; i>=0; i--) {
if(arr[i] > rightMax)
{
rightMax=arr[i];
System.out.print(" "+rightMax);
}
}
}
时间复杂性:o(n)
Java程序查找阵列中的领导者:
package org.igi.theitroad;
public class FindLeadersInArrayMain {
public static void main(String[] args) {
int arr[]={14, 12, 70, 15, 99, 65, 21, 90};
findLeadersInAnArrayBruteForce(arr);
System.out.println("n==================");
findLeadersInAnArray(arr);
}
public static void findLeadersInAnArrayBruteForce(int arr[])
{
System.out.println("Finding leaders in an array using brute force : ");
for (int i = 0; i < arr.length; i++) {
boolean isLeader=true;
for (int j = i+1; j < arr.length; j++) {
if(arr[i] <= arr[j])
{
isLeader=false;
break;
}
}
if(isLeader)
System.out.print(arr[i]+" ");
}
}
public static void findLeadersInAnArray(int arr[])
{
System.out.println("Finding leaders in an array : ");
int rightMax=arr[arr.length-1];
//Rightmost will always be a leader
System.out.print(rightMax+" ");
for (int i = arr.length-2; i>=0; i--) {
if(arr[i] > rightMax)
{
rightMax=arr[i];
System.out.print(" "+rightMax);
}
}
}
}
运行上面的程序时,我们将得到以下输出:
Finding leaders in an array using brute force 99 90 ================== Finding leaders in an array : 90 99

