По целому n построить квадратную матрицу n×n, заполненную числами
1, 2, …, n² в случайном порядке: каждое число встречается ровно один раз.
func RandomMatrix(n int) [][]int
Требования
- Результат —
n строк по n элементов, все числа от 1 до n² встречаются
по одному разу.
- Расположение случайное: любое число с равной вероятностью может оказаться в
любой клетке.
n <= 0 — пустая матрица (len == 0), без паники.
- Строки независимы:
append к одной строке не портит соседнюю.
Пример
m := RandomMatrix(3)
// например
// [7 2 9]
// [1 5 3]
// [8 4 6]
Матрицу строят часто и большой. Сделай так, чтобы RandomMatrix выделял память
не больше двух раз: один массив под все n² чисел и один слайс заголовков
строк. Требование про независимость строк остаётся.
Устно: чем [][]int отличается от [n][n]int по раскладке в памяти? Как
изменить решение, если числа должны быть уникальными случайными из [0, 10⁹)?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.