我们需要打印数组中存在的一切leaders。若元素大于元素右侧,则元素为领导者。& v' s) o. a$ N y) p
例如:+ q% }, }5 d+ I u" v9 [- y
arr[]={14、12、70、15、99、65、21、90}Here 99 and 90 are leader elements Z1 e9 I0 Z% W 解决方案: * Q6 q5 D; |# L9 w: X6 p
使用两个循环。外循环迭代数组元素,内循环检查数组的正确元素。如果当前元素大于右侧元素,则为leaders。 + Z3 m, C" D! L( hjava代码:0 i1 v" A4 m4 i3 A
public static void findLeadersInAnArrayBruteForce(int arr() System.out.println("Finding leaders in an array using brute force : "); for (int i = 0; i 时间复杂:o(N^2)9 s, T* N* t5 _; C' V
解决方案2: / s; [% i! u* n0 J$ {% E2 S让我们找到更优化的解决方案) C$ V5 g& }0 [8 ~9 D
我们将永远使用最右边的元素leaders的属性。) X2 l; I, x2 W, B
我们将从最右边的元素开始,并跟踪最大值。2 o7 B2 W; x4 V5 e9 b
当我们得到新的最大值时,这个元素就是leaders。3 H5 B& i) {0 p* s7 T9 ~
java代码: , v$ V6 q( T, w7 a( D0 Ppublic static void findLeadersInAnArray(int arr { System.out.println("Finding leaders in an array : "); int rightMax=arr[arr.length-一、 / 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)3 g c2 ~& w* P s9 o% |! m
在数组中搜索leaders的 Java 程序: . n: i. j K0 ~3 i9 }* Wpackage org.arpit.java2blog;public class FindLeadersInArrayMain { public static void main(String[] args) { int arr[]={14findLeadersInAnArrayBruteForce(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 =0; i--) { if(arr<i> > rightMax) { rightMax=arr<i>; System.out.print(" " rightMax); 当您操作上述程序时,您将获得以下输出:' G. f6 H! V, ]4 J: D
Finding leaders in an array using brute force99 90 ==================Finding leaders in an array :90 99