Форум программистов, компьютерный форум, киберфорум
alhaos
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

[golang] 189. Rotate Array

Запись от alhaos размещена 28.01.2025 в 14:31
Показов 2856 Комментарии 0
Метки go

Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// [url]https://leetcode.com/studyplan/top-interview-150/[/url]
 
package topInterview
 
// rotate
//
// 189. Rotate Array
//
// Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.
//
// Example 1:
//
// Input: nums = [1,2,3,4,5,6,7], k = 3
// Output: [5,6,7,1,2,3,4]
// Explanation:
// rotate 1 steps to the right: [7,1,2,3,4,5,6]
// rotate 2 steps to the right: [6,7,1,2,3,4,5]
// rotate 3 steps to the right: [5,6,7,1,2,3,4]
// Example 2:
//
// Input: nums = [-1,-100,3,99], k = 2
// Output: [3,99,-1,-100]
// Explanation:
// rotate 1 steps to the right: [99,-1,-100,3]
// rotate 2 steps to the right: [3,99,-1,-100]
//
// Constraints:
//
// 1 <= nums.length <= 105
// -231 <= nums[i] <= 231 - 1
// 0 <= k <= 105
//
func rotate(nums []int, k int) {
    // Инициализировать переменную длинной слайса nums
    lengthNums := len(nums)
    // Инициализировать переменную остатком от деления количества шагов на длину слайса
    remainder := k % lengthNums
    // Скопировать в nums результат объединения части слайса nums от разности
    // длины слайса и остатка с каждым элементом части слайса от начала до разности длины с остатком
    copy(nums, append(nums[lengthNums-remainder:], nums[:lengthNums-remainder]...))
}
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
func TestRotate(t *testing.T) {
 
    data := []struct {
        nums        []int
        k           int
        numsMutated []int
    }{
        {
            []int{1, 2, 3, 4, 5, 6, 7},
            3,
            []int{5, 6, 7, 1, 2, 3, 4},
        },
        {
            []int{1, 2, 3, 4, 5, 6, 7},
            1,
            []int{7, 1, 2, 3, 4, 5, 6},
        },
        {
            []int{1, 2, 3, 4, 5, 6, 7},
            2,
            []int{6, 7, 1, 2, 3, 4, 5},
        },
        {
            []int{-1, -100, 3, 99},
            2,
            []int{3, 99, -1, -100},
        },
        {
            []int{-1, -100, 3, 99},
            1,
            []int{99, -1, -100, 3},
        },
        {
            []int{-1, -100, 3, 99},
            0,
            []int{-1, -100, 3, 99},
        },
        {
            []int{0},
            99,
            []int{0},
        },
    }
 
    for i, datum := range data {
 
        rotate(datum.nums, datum.k)
 
        if !reflect.DeepEqual(datum.nums, datum.numsMutated) {
            t.Errorf("unexpected result for test index %d key was: %d expected [%+v] got [%+v]", i, datum.k, datum.numsMutated, datum.nums)
        }
    }
}
Code
1
2
3
=== RUN   TestRotate
--- PASS: TestRotate (0.00s)
PASS
https://github.com/alhaos/problems
Метки go
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru