[Тестовое Google] Простые множители произведения массива
Задача
Дан массив целых положительных чисел nums, верните количество различных простых множителей в произведении элементов
▪️Число, большее
▪️Целое число val1 является множителем другого целого числа
Пример
Произведение всех элементов в `
Произведение всех элементов в `
#junior #задача #golang
Пишите свое решение в комментариях👇
Задача
Дан массив целых положительных чисел nums, верните количество различных простых множителей в произведении элементов
nums
. Функция должна называться distinctPrimeFactors.
Обратите внимание, что:▪️Число, большее
1
, называется простым, если оно делится только на 1 и само на себя.▪️Целое число val1 является множителем другого целого числа
val2
, если val2
/ val1
является целым числом.Пример
nums = [2,4,3,7,10,6]
distinctPrimeFactors(nums)
# 4
# Пояснение:Произведение всех элементов в `
nums
` равно: `2 * 4 * 3 * 7 * 10 * 6 = 10080 = 25 * 32 * 5 * 7`.
Существует 4
различных простых множителя, поэтому мы возвращаем 4.
nums = [2,4,8,16]
distinctPrimeFactors(nums)
# 1
# Пояснение:Произведение всех элементов в `
nums
` равно: `2 * 4 * 8 * 16 = 1024 = 210`.
Существует 1 различный простой множитель, поэтому мы возвращаем 1.#junior #задача #golang
Пишите свое решение в комментариях👇
Ребят, если нужны книги по GO, то скачать можете в нашем канале: https://www.tgoop.com/golangsbook.
Если не трудно - подпишитесь
Если не трудно - подпишитесь
Что выведет код ?
package main
import (
"fmt"
)
func main() {
x := [2]int{1, 2}
r := [...]int{1, 2}
fmt.Println(x == r)
}
Ответgo.dev
Go Playground - The Go Programming Language
Кэширование
Эта статья дает структурированную основу и раскрывает ряд неочевидных особенностей кэширования.
💎 Чат: ссылка
Читать статью
Эта статья дает структурированную основу и раскрывает ряд неочевидных особенностей кэширования.
💎 Чат: ссылка
Читать статью
Что выведет код?
numbers := []*int{}
for _, value := range []int{1, 2, 3, 4, 5} {
numbers = append(numbers, &value)
}
for _, value := range numbers {
fmt.Println(*value)
}
Ответgo.dev
Go Playground - The Go Programming Language
Что выведет код ?
package main
import "fmt"
func sum(a, b any) any {
return a + b
}
func main() {
fmt.Println(sum(2, 3))
}
Ответ📌 Задача с leetcode. Max Area of Island
Максимальная площадь острова
Сложность: Средняя
Условие задачи:
Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6
Ввод: grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0
Решение
Максимальная площадь острова
Сложность: Средняя
Условие задачи:
Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6
Ввод: grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0
Решение
func maxAreaOfIsland(grid [][]int) int {
rows := len(grid)
if rows == 0 {
return 0
}
cols := len(grid[0])
var dfs func(grid [][]int, x, y, r, c, area int) int
dfs = func(grid [][]int, x, y, r, c, area int) int {
if x < 0 || y < 0 || x >= r || y >= c || grid[x][y] != 1 {
return area
}
grid[x][y] = 2
return 1 + dfs(grid, x+1, y, r, c, area) + dfs(grid, x, y+1, r, c, area) + dfs(grid, x-1, y, r, c, area) + dfs(grid, x, y-1, r, c, area)
}
maxArea := 0
for i := 0; i < rows; i++ {
for j := 0; j < cols; j++ {
area := dfs(grid, i, j, rows, cols, 0)
maxArea = int(math.Max(float64(area), float64(maxArea)))
}
}
return maxArea
}
Временная сложность: O(N*M)
Пространственная сложность: O(1)
Пишите свое решение в комментариях👇🔐 Безопасность цепочки поставок: серия статей от Google для Go-разработчика
По мере усложнения проектов корпоративным разработчикам приходится справляться с огромной волной уязвимостей, распространяющихся по деревьям зависимостей.
Разработчикам открытого ПО необходимы эффективные способы проверки кода, зависимостей и защиты своих проектов. Рост числа атак в сочетании с усложняющимися цепочками поставок означает, что проблемы безопасности цепочек поставок требуют решения на уровне экосистем.
С помощью Golang разработчики меняют ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях.
Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.
▪️ Vulnerability management
▪️ Compromised dependencies
▪️ Shifting left
По мере усложнения проектов корпоративным разработчикам приходится справляться с огромной волной уязвимостей, распространяющихся по деревьям зависимостей.
Разработчикам открытого ПО необходимы эффективные способы проверки кода, зависимостей и защиты своих проектов. Рост числа атак в сочетании с усложняющимися цепочками поставок означает, что проблемы безопасности цепочек поставок требуют решения на уровне экосистем.
С помощью Golang разработчики меняют ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях.
Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.
▪️ Vulnerability management
▪️ Compromised dependencies
▪️ Shifting left
Ускорить работу с данными на Go, но избежать эффекта гонок? В этом помогут примитивы синхронизации.
В новом выпуске avito.code бэкендер Авито Виталий Лихачёв рассказывает, как они работают и, в частности, какой есть альтернативный способ их реализации.
А ещё в этом выпуске Виталий рассмотрел сразу несколько паттернов параллельных вычислений.
Словом, видео, которое нельзя пропустить.
Реклама. ООО «Авито Тех».
В новом выпуске avito.code бэкендер Авито Виталий Лихачёв рассказывает, как они работают и, в частности, какой есть альтернативный способ их реализации.
А ещё в этом выпуске Виталий рассмотрел сразу несколько паттернов параллельных вычислений.
Словом, видео, которое нельзя пропустить.
Реклама. ООО «Авито Тех».
YouTube
Паттерны параллельных вычислений в Golang | avito.code
Привет! Это avito.code. Здесь опытные инженеры Авито делятся знаниями и рассказывают про свои рабочие инструменты.
В этом выпуске Виталий Лихачёв https://www.youtube.com/@makeitgit, бэкенд-инженер в команде Authorization Tiger Team, продолжает рассказывать…
В этом выпуске Виталий Лихачёв https://www.youtube.com/@makeitgit, бэкенд-инженер в команде Authorization Tiger Team, продолжает рассказывать…
Язык программирования Go
Авторы: Алан А. А. Донован, Брайан У. Керниган
Год издания: 2019
#go #ru
Скачать книгу
Авторы: Алан А. А. Донован, Брайан У. Керниган
Год издания: 2019
#go #ru
Скачать книгу
Что выведет код ?
package main
import (
"fmt"
)
func main() {
var i interface{}
if i == nil {
fmt.Println("nil")
return
}
fmt.Println("not nil")
}
ОтветГотовимся к собеседованиям по Go и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для Go-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код
Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код
Go module proxy at Grab
Интересная статья о повышении скорости использования модулей Go с помощью прокси.
💎 Чат: ссылка
Читать статью
Интересная статья о повышении скорости использования модулей Go с помощью прокси.
💎 Чат: ссылка
Читать статью
📌 Задача палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв.
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, которая одинаково читаются слева направо и справа налево.
Пример:
Ввод:
Объяснение:
Ввод:
Объяснение:
Ввод:
Решение
Пишите свое решение в комментариях👇
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, которая одинаково читаются слева направо и справа налево.
Пример:
Ввод:
words = ["lc","cl","gg"]
Вывод: 6
Объяснение:
lc" + "gg" + "cl" = "lcggcl"
или же "clgglc
", но оба имеют максимальную длину 6. Ввод:
words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8
Объяснение:
"ty" + "lc" + "cl" + "yt" = "tylcclyt"
или "lcyttycl"
Ввод:
words = ["cc","ll","xx"]
Вывод: 2
Решение
Пишите свое решение в комментариях👇
Погружение в принципы SOLID с примерами на языке Golang
Принципы SOLID - это набор из пяти принципов проектирования для написания удобного в обслуживании и масштабируемого программного обеспечения в объектно-ориентированном программировании. Они были введены Робертом К. Мартином. Эти принципы представляют собой рекомендации по структурированию кода таким образом, чтобы его было легко понять, изменить и расширить.
💎 Чат: ссылка
Читать статью
Принципы SOLID - это набор из пяти принципов проектирования для написания удобного в обслуживании и масштабируемого программного обеспечения в объектно-ориентированном программировании. Они были введены Робертом К. Мартином. Эти принципы представляют собой рекомендации по структурированию кода таким образом, чтобы его было легко понять, изменить и расширить.
💎 Чат: ссылка
Читать статью