• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

? Series: Leetcoding in Go — slices.Backward()

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
As Go engineers, we take pride in the language and our experience with it. Yet, many Go developers default to Python in technical interviews, often believing it's more interview-friendly.

But if you're applying to a Go-heavy team, there's no better way to win over your future coworkers than by showing you're fluent in Go — even under pressure.

There's a common perception that interviewing in Go puts you at a disadvantage compared to interviewing in Python. Python has built-ins such as reversed()—great for saving time and lines of code.

slices.Backward():

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

(introduced in 1.23)


The following is a valid solution to leetcode 347:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



This solution:

  • Tracks frequencies in a single map pass
  • Groups numbers into frequency “buckets”
  • Uses slices.Backward() to iterate from highest frequency down
  • Stops early once k results are collected

import "slices"

func topKFrequent(nums []int, k int) []int {
frequencies := make(map[int]int)

for _, n := range nums {
frequencies[n]++
}

buckets := make([][]int, len(nums)+1)
for n, freq := range frequencies {
buckets[freq] = append(buckets[freq], n)
}

results := make([]int, 0, k)

// Reverse-iterate the buckets slice. Comparable to Python's reversed.
for _, b := range slices.Backward(buckets) {
if len(results) == k {
return results
}

if len(b) <= k-len(results) {
results = append(results, b...)
} else {
results = append(results, b[:k-len(results)]...)
}
}

return results
}

Compared to for i := len(nums) - 1; i >= 0; i-- {}, using slices.Backward() is easier to read, more expressive of intent, and shows fluency with Go’s modern standard library.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу