0
0
DSA Goprogramming~20 mins

Aggressive Cows Maximum Minimum Distance in DSA Go - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Aggressive Cows Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of maximum minimum distance calculation
What is the output of the following Go code that calculates the maximum minimum distance to place 3 cows in given stalls?
DSA Go
package main
import (
	"fmt"
	"sort"
)

func canPlaceCows(stalls []int, cows int, dist int) bool {
	count := 1
	lastPos := stalls[0]
	for i := 1; i < len(stalls); i++ {
		if stalls[i]-lastPos >= dist {
			count++
			lastPos = stalls[i]
			if count == cows {
				return true
			}
		}
	}
	return false
}

func maxMinDistance(stalls []int, cows int) int {
	sort.Ints(stalls)
	low, high := 0, stalls[len(stalls)-1]-stalls[0]
	result := 0
	for low <= high {
		mid := (low + high) / 2
		if canPlaceCows(stalls, cows, mid) {
			result = mid
			low = mid + 1
		} else {
			high = mid - 1
		}
	}
	return result
}

func main() {
	stalls := []int{1, 2, 8, 4, 9}
	cows := 3
	fmt.Println(maxMinDistance(stalls, cows))
}
A2
B3
C5
D4
Attempts:
2 left
💡 Hint
Think about placing cows with the largest minimum gap possible using binary search.
🧠 Conceptual
intermediate
1:30remaining
Understanding the role of sorting in Aggressive Cows problem
Why is it necessary to sort the stall positions before applying the binary search approach in the Aggressive Cows problem?
ATo ensure the stalls are in increasing order so we can check distances between adjacent stalls correctly
BSorting is not necessary; the algorithm works without sorting
CTo group stalls with the same position together
DTo find the maximum stall position easily
Attempts:
2 left
💡 Hint
Think about how distances between stalls are calculated.
🔧 Debug
advanced
2:00remaining
Identify the bug causing incorrect output
The following Go code attempts to solve the Aggressive Cows problem but returns 2 instead of the correct answer 3. What is the bug?
DSA Go
func canPlaceCows(stalls []int, cows int, dist int) bool {
	count := 1
	lastPos := stalls[0]
	for i := 1; i < len(stalls); i++ {
		if stalls[i]-lastPos > dist {
			count++
			lastPos = stalls[i]
			if count == cows {
				return true
			}
		}
	}
	return false
}
AThe lastPos should be initialized to stalls[len(stalls)-1]
BThe count should start from 0 instead of 1
CThe condition should be stalls[i]-lastPos >= dist instead of > dist
DThe loop should start from i = 0 instead of i = 1
Attempts:
2 left
💡 Hint
Check the condition that decides if a cow can be placed at a stall.
Predict Output
advanced
2:00remaining
Output of maximum minimum distance with larger input
What is the output of the following Go code that calculates the maximum minimum distance to place 4 cows in given stalls?
DSA Go
package main
import (
	"fmt"
	"sort"
)

func canPlaceCows(stalls []int, cows int, dist int) bool {
	count := 1
	lastPos := stalls[0]
	for i := 1; i < len(stalls); i++ {
		if stalls[i]-lastPos >= dist {
			count++
			lastPos = stalls[i]
			if count == cows {
				return true
			}
		}
	}
	return false
}

func maxMinDistance(stalls []int, cows int) int {
	sort.Ints(stalls)
	low, high := 0, stalls[len(stalls)-1]-stalls[0]
	result := 0
	for low <= high {
		mid := (low + high) / 2
		if canPlaceCows(stalls, cows, mid) {
			result = mid
			low = mid + 1
		} else {
			high = mid - 1
		}
	}
	return result
}

func main() {
	stalls := []int{1, 2, 4, 8, 9, 12, 16}
	cows := 4
	fmt.Println(maxMinDistance(stalls, cows))
}
A5
B7
C6
D4
Attempts:
2 left
💡 Hint
Try placing cows with increasing minimum distances and check feasibility.
🧠 Conceptual
expert
2:30remaining
Why binary search is suitable for Aggressive Cows problem?
Why is binary search an efficient approach to find the maximum minimum distance in the Aggressive Cows problem?
ABecause the problem can be transformed into a decision problem where feasibility of a distance can be checked in linear time
BBecause sorting the stalls automatically gives the answer without further checks
CBecause the number of cows is always small, so binary search is faster
DBecause binary search directly finds the exact stall positions for cows
Attempts:
2 left
💡 Hint
Think about how binary search narrows down the search space using a yes/no check.