我们需要打印数组中存在的一切leaders。若元素大于元素右侧,则元素为领导者。3 M) W! T5 e5 }" t& l
例如:; o0 r. Z1 i: P! O( d" S
arr[]={14、12、70、15、99、65、21、90}Here 99 and 90 are leader elements , P: U" f; i3 i C& i/ K解决方案: + \& K6 R1 e9 P0 m 使用两个循环。外循环迭代数组元素,内循环检查数组的正确元素。如果当前元素大于右侧元素,则为leaders。7 V0 z2 O* \/ s1 _5 d+ T
java代码:; |7 ^/ T% L9 R9 j7 u. z
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) ! t$ K& N) h( E1 u+ D解决方案2: 7 y: L; C ?8 e' V让我们找到更优化的解决方案 - [1 H1 ~3 ~- F我们将永远使用最右边的元素leaders的属性。 % o/ ~* f5 W5 o我们将从最右边的元素开始,并跟踪最大值。, o* r% d( d. w0 i! C6 X
当我们得到新的最大值时,这个元素就是leaders。 ; ?# P1 D4 w+ [1 w: Sjava代码:/ B; A+ X8 l, w8 A, Y& q
public 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) R; ?3 ~: |* P$ c& }& n
在数组中搜索leaders的 Java 程序: 5 n4 q3 D7 W4 ]) t% Lpackage 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); 当您操作上述程序时,您将获得以下输出:+ ?% z. C- j9 [1 P
Finding leaders in an array using brute force99 90 ==================Finding leaders in an array :90 99