Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
348 - Telegram Web
Telegram Web
[Тестовое Google] Простые множители произведения массива

Задача
Дан массив целых положительных чисел 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.

Если не трудно - подпишитесь
Gocache

Полезная библиотека кэша Go, которая предоставляет вам множество способов управления кэшем.

💎 Чат: ссылка

Github
Modern Web Development with Go

Автор
: Dušan Stojanović
Год издания: 2023

#go #en

Скачать книгу
Efficient Go

Автор:
Bartlomiej Plotka
Год издания: 2021

#go #en

Скачать книгу
Что выведет код ?

package main

import (
"fmt"
)

func main() {
x := [2]int{1, 2}
r := [...]int{1, 2}
fmt.Println(x == r)
}

Ответ
Кэширование

Эта статья дает структурированную основу и раскрывает ряд неочевидных особенностей кэширования.

💎 Чат: ссылка

Читать статью
Что выведет код?

numbers := []*int{}

for _, value := range []int{1, 2, 3, 4, 5} {
numbers = append(numbers, &value)
}

for _, value := range numbers {
fmt.Println(*value)
}

Ответ
Что выведет код ?

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

Решение

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
Ускорить работу с данными на Go, но избежать эффекта гонок? В этом помогут примитивы синхронизации.

В новом выпуске avito.code бэкендер Авито Виталий Лихачёв рассказывает, как они работают и, в частности, какой есть альтернативный способ их реализации.

А ещё в этом выпуске Виталий рассмотрел сразу несколько паттернов параллельных вычислений.
Словом, видео, которое нельзя пропустить.

Реклама. ООО «Авито Тех».
Язык программирования Go

Авторы:
Алан А. А. Донован, Брайан У. Керниган
Год издания: 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 module proxy at Grab

Интересная статья о повышении скорости использования модулей Go с помощью прокси.

💎 Чат: ссылка

Читать статью
Hands-On High Performance with Go

Автор:
Bob Strecansky
Год издания: 2020

#go #en

Скачать книгу
📌 Задача палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв.

Сложность: Средняя

Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.

Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.

В ответе надо вернуть длину такого палидрома.

Палиндром - строка, которая одинаково читаются слева направо и справа налево.

Пример:

Ввод:
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

Решение

Пишите свое решение в комментариях👇
Teamgram

Self hosted mtproto messenger.

Mtproto cервер с открытым исходным кодом, написанный на Go, который совместим с клиентом Telegram.

💎 Чат: ссылка

▪️Github
▪️Teamgram
Погружение в принципы SOLID с примерами на языке Golang

Принципы SOLID - это набор из пяти принципов проектирования для написания удобного в обслуживании и масштабируемого программного обеспечения в объектно-ориентированном программировании. Они были введены Робертом К. Мартином. Эти принципы представляют собой рекомендации по структурированию кода таким образом, чтобы его было легко понять, изменить и расширить.

💎 Чат: ссылка

Читать статью
2025/07/05 06:53:47
Back to Top
HTML Embed Code: