Height Checker using golang
import "fmt"
func heightChecker(heights []int) int {
    var bkp []int
    var temp []int
    c := 0
    for ;c < len(heights);{
        temp = append(temp, 0)
        bkp = append(bkp, heights[c])
        c++
    }
    sort(heights, temp, 0, len(heights)-1)
    fmt.Println(heights)
    c = 0
    cnt := 0
    for ;c < len(heights);c++{
        if heights[c] != bkp[c]{
            cnt++
        }
        
    }
    
    return cnt
}

func merge(arr []int, temp []int, left int, mid int, right int) {
    i := left
    j := mid
    k := left
    
    for ;i < mid && j <= right;{
        if arr[i] <= arr[j]{
            temp[k] = arr[i]
            k++
            i++
        } else {
            temp[k] = arr[j]
            k++
            j++
        }
    }
    
    for ;i < mid;{
        temp[k] = arr[i]
        k++
        i++
    }
    
    for ;j <= right;{
        temp[k] = arr[j]
        k++
        j++
    }
    
    for m := left;m < right+1;m++{
        arr[m] = temp[m]
    }
}

func sort(arr []int, temp []int, left int, right int) {
    if left < right{
        mid := int((left+right)/2)
        sort(arr, temp, left, mid)
        sort(arr, temp, mid+1, right)
        
        merge(arr, temp, left, mid+1, right)
    }
}
Comments (0)