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