📜  数组中领导者的Python程序

📅  最后修改于: 2022-05-13 01:54:35.030000             🧑  作者: Mango

数组中领导者的Python程序

编写一个程序来打印数组中的所有 LEADERS。如果一个元素大于其右侧的所有元素,则该元素是领导者。最右边的元素始终是领导者。例如在数组 {16, 17, 4, 3, 5, 2} 中,领导者是 17、5 和 2。
让输入数组为 arr[] ,数组的大小为size

方法1(简单)
使用两个循环。外部循环从 0 运行到 size – 1,并从左到右一一选取所有元素。内部循环将选取的元素与其右侧的所有元素进行比较。如果选取的元素大于其右侧的所有元素,则选取的元素为前导。

Python
# Python Function to print leaders in array 
  
def printLeaders(arr,size): 
      
    for i in range(0, size): 
        for j in range(i+1, size): 
            if arr[i]<=arr[j]: 
                break
        if j == size-1: # If loop didn't break 
            print arr[i], 
  
# Driver function 
arr=[16, 17, 4, 3, 5, 2] 
printLeaders(arr, len(arr)) 
  
# This code is contributed by _Devesh Agrawal__


Python
# Python function to print leaders in array
def printLeaders(arr, size):
     
    max_from_right = arr[size-1]   
    print max_from_right,    
    for i in range( size-2, -1, -1):        
        if max_from_right < arr[i]:        
            print arr[i],
            max_from_right = arr[i]
          
# Driver function
arr = [16, 17, 4, 3, 5, 2]
printLeaders(arr, len(arr))
  
# This code contributed by _Devesh Agrawal__


输出:

17 5 2

时间复杂度: O(n*n)
方法2(从右侧扫描)
从右到左扫描数组中的所有元素并跟踪最大值。当最大值改变它的值时,打印它。
下图是上述方法的试运行:

下面是上述方法的实现:

Python

# Python function to print leaders in array
def printLeaders(arr, size):
     
    max_from_right = arr[size-1]   
    print max_from_right,    
    for i in range( size-2, -1, -1):        
        if max_from_right < arr[i]:        
            print arr[i],
            max_from_right = arr[i]
          
# Driver function
arr = [16, 17, 4, 3, 5, 2]
printLeaders(arr, len(arr))
  
# This code contributed by _Devesh Agrawal__

输出:

2 5 17

时间复杂度: O(n)

有关详细信息,请参阅有关数组中的领导者的完整文章!