数组中的领导者的 C# 程序
编写一个程序来打印数组中的所有 LEADERS。如果一个元素大于其右侧的所有元素,则该元素是领导者。最右边的元素始终是领导者。例如在数组 {16, 17, 4, 3, 5, 2} 中,领导者是 17、5 和 2。
让输入数组为 arr[] ,数组的大小为size 。
方法1(简单)
使用两个循环。外部循环从 0 运行到 size – 1,并从左到右一一选取所有元素。内部循环将选取的元素与其右侧的所有元素进行比较。如果选取的元素大于其右侧的所有元素,则选取的元素为前导。
C#
// C# program to print
// leaders in array
using System;
class GFG
{
void printLeaders(int []arr,
int size)
{
for (int i = 0; i < size; i++)
{
int j;
for (j = i + 1; j < size; j++)
{
if (arr[i] <=arr[j])
break;
}
// the loop didn't break
if (j == size)
Console.Write(arr[i] + " ");
}
}
// Driver Code
public static void Main()
{
GFG lead = new GFG();
int []arr = new int[]{16, 17, 4, 3, 5, 2};
int n = arr.Length;
lead.printLeaders(arr, n);
}
}
// This code is contributed by
// Akanksha Rai(Abby_akku)
C#
// C# program to find Leaders in an array
using System;
class LeadersInArray {
// C# Function to print leaders
// in an array
void printLeaders(int []arr, int size)
{
int max_from_right = arr[size - 1];
// Rightmost element is always leader
Console.Write(max_from_right +" ");
for (int i = size - 2; i >= 0; i--)
{
if (max_from_right < arr[i])
{
max_from_right = arr[i];
Console.Write(max_from_right +" ");
}
}
}
// Driver Code
public static void Main(String[] args)
{
LeadersInArray lead = new LeadersInArray();
int []arr = new int[]{16, 17, 4, 3, 5, 2};
int n = arr.Length;
lead.printLeaders(arr, n);
}
}
// This code is contributed
// by Akanksha Rai(Abby_akku)
输出:
17 5 2
时间复杂度: O(n*n)
方法2(从右侧扫描)
从右到左扫描数组中的所有元素并跟踪最大值。当最大值改变它的值时,打印它。
下图是上述方法的试运行:
下面是上述方法的实现:
C#
// C# program to find Leaders in an array
using System;
class LeadersInArray {
// C# Function to print leaders
// in an array
void printLeaders(int []arr, int size)
{
int max_from_right = arr[size - 1];
// Rightmost element is always leader
Console.Write(max_from_right +" ");
for (int i = size - 2; i >= 0; i--)
{
if (max_from_right < arr[i])
{
max_from_right = arr[i];
Console.Write(max_from_right +" ");
}
}
}
// Driver Code
public static void Main(String[] args)
{
LeadersInArray lead = new LeadersInArray();
int []arr = new int[]{16, 17, 4, 3, 5, 2};
int n = arr.Length;
lead.printLeaders(arr, n);
}
}
// This code is contributed
// by Akanksha Rai(Abby_akku)
输出:
2 5 17
时间复杂度: O(n)
有关详细信息,请参阅有关数组中的领导者的完整文章!