我们需要打印数组中存在的一切leaders。若元素大于元素右侧,则元素为领导者。 ! c/ o {( I. V$ k) w例如:! a1 S1 P6 f. l; W
arr[]={14、12、70、15、99、65、21、90}Here 99 and 90 are leader elements ! ~, z' u( S) d( Q$ s* l解决方案: 8 `3 K& J1 O$ I- B 使用两个循环。外循环迭代数组元素,内循环检查数组的正确元素。如果当前元素大于右侧元素,则为leaders。 ( X9 x' A& P8 N6 F0 i7 s1 Q5 {java代码:0 N% ?: S1 B- D; ]
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)2 r, x1 C! A2 \0 g8 o
解决方案2:3 e0 s& r0 x9 R f X0 L0 O
让我们找到更优化的解决方案 0 T3 W V; i: B我们将永远使用最右边的元素leaders的属性。 / T* G' L( _( ^. k3 x6 \我们将从最右边的元素开始,并跟踪最大值。7 q: X% Z9 ` E+ p
当我们得到新的最大值时,这个元素就是leaders。 9 W# A" A2 n9 N. K' v. ~java代码:" u- ]! B( |$ U
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)6 F Z1 s: r# e' n, M$ E
在数组中搜索leaders的 Java 程序:. D! i1 L/ B- o2 B7 e* A( k
package 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); 当您操作上述程序时,您将获得以下输出: ! v* N, e) o; u: Z' h( F2 hFinding leaders in an array using brute force99 90 ==================Finding leaders in an array :90 99