Advertisement
alisadafi

Majority-Element-D&C

Nov 9th, 2023 (edited)
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.71 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5. )
  6.  
  7. func majority(A []int, l int, r int) int {
  8.     if l == r {
  9.         return A[l]
  10.     }
  11.     mid := (l + r) / 2
  12.     a := majority(A, mid+1, r)
  13.     b := majority(A, l, mid)
  14.     if a == b {
  15.         return a
  16.     }
  17.     count_a := 0
  18.     count_b := 0
  19.     for i := l; i <= r; i++ {
  20.         if A[i] == a {
  21.             count_a += 1
  22.         } else if A[i] == b {
  23.             count_b += 1
  24.         }
  25.     }
  26.     if count_a > (r-l+1)/2 {
  27.         return a
  28.     } else if count_b > (r-l+1)/2 {
  29.         return b
  30.     } else {
  31.         return -1 // Not found
  32.     }
  33. }
  34.  
  35. func main() {
  36.     A := []int{2, 2, 3, 4, 2, 2, 5}
  37.     l := 0
  38.     r := len(A) - 1
  39.     result := majority(A, l, r)
  40.     if result != -1 {
  41.         fmt.Println("Majority element:", result)
  42.     } else {
  43.         fmt.Println("No majority element found.")
  44.     }
  45. }
  46.  
Tags: D&C
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement