Essa questão caiu no meu Loop da amazon no meio do ano passado, e eu tinha assistido um dia antes a resolução de um youtuber chamado NeetCode e acabei conseguindo fazer a questão, mas eu tenho certeza que essa questão mostrou para o meu entrevistador que eu só copiei a solução de alguém... Inclusive ele reclamou muito que usei r para rows e c para columns e disse que meu codigo nao estaria read-to-production porque eu não dava nomes claros para as minhas variaveis (em um live coding de 30 minutos). Nesse mesmo loop tive uma entrevista que foi para fazer o famoso LRU Cache do leetcode, com um indiano em ingles (apesar de eu falar ingles, o nervosismos de estar num loop de uma bigtech + um problema super Hard me fudeu). As vezes eu acho que esses problemas de leetcode não mostram nada. Não adianta eu saber resolver tudo em O(n) ou log(n) e no trabalho eu ser um baita de um cuzão e não aceitar um review honesto no meu PR. Concordo que existem problemas que mostram se voce sabe usar um two pointer ou um hash ou uma heap e isso é util... mas sinceramente, quando é que tu vai implementar uma Aho-Corasick?? Em qual ambiente de trabalho de verdade vc vai ter 30 minutos para resolver um problema em tempo e memoria otima e isso vai fazer toda a diferença? Cara, se você está nesse ambiente de trabalho e consegue, eu tenho certeza que você não deveria estar aplicando pra SDE II e ganhando "só" 200k ano. Se você resolve um problema complexo em tempo otimo em 30 minutos você tem que tá ganhando milhão.
Acho que não é muito sobre usar as coisas, mas alguém que se deu o trabalho de aprender Aho pra resolver problemas não é qualquer pessoa, convenhamos. Sobre o salário, já é bem maior do que a maioria da área kk mas a Amazon é conhecida por pagar menos mesmo.
É tipo aprender bhaskara, você provavelmente n vai usar, mas ajuda. Adesenvolver a logica matemática, no caso desses leetcode, mostra q vc entende de logica de programação, não é só majs um que cospe codigos que qualquer IA saberia fazer. Mas concordo que eles exageram nesses testes
@@YuriXbrOficial na real bhaskara não ajuda a desenvolver lógica matemática, justamente por ser contra intuitiva, o que ajuda a desenvolver a lógica são operações que seu cerebro consegue entender como montar a equação para descobrir o resultado ou consegue dissecar a equação e explicar o motivo de cada operação
Cara, tua solução com a divisão por intereiro foi genial. E realmente, para um livecode olhando para a performance, eu diria que, a depender do tempo para resolução, poderia até ser possível e tranquilo. Algo como 2H, 2h:30min, acho que daria para fazer. Isso se o sujeito já tivesse um certo (pensamento elevado) na resolução de problemas do tipo.
@@avloggerfinger9050 Eu estou estudando pro ENEM pra passar em medicina, o motivo de eu ter parado é simplesmente por que eu não faço a mínima ideia de como ingressar nessa área do mercado de trabalho e era bem inseguro sobre minhas habilidades. Basicamente eu não sabia o que eu precisava saber pra conseguir trabalhar eu apenas estudava um monte de coisa.
@@tadashi1870isso é bem ruim, mas esse seu problema tbm é aplicavel a medicina, especialmente se teu background educacional foi ruim, como o meu foi 😂
@tadashi1870 Aata, é bem confuso mesmo. Ainda mais com um monte de gente vendendo cursinho prometendo isso e aquilo, sksksk. Bom, desejo-te sucesso no Enem, hehe. Ps: Vou fazer também. ;)
Amanhã vou fazer a última fase do processo seletivo da Amazon para SDE II. Estou preparado mas nervoso e com um pouco de medo, quero muito passar. Se esse problema cair, vou ficar feliz! Ótimo conteúdo, abraços
Sugestão que não sei se já faz no seu curso mas seria legal qd tiver um problema fazer primeiro o brute force que é mais "simples" de entender e depois num outro vídeo ou algo do tipo mostrar a solução otimizada.
Eu faço exatamente o pensamento que voce fez na resolução pra resolver o próprio sudoku Mesmo sem ter contato com leet code eu ja havia pensado em solucionar dessa forma
por incrivel que pareça eu apesar de " estudar programação " eu não posso dizer que nem iniciante sou pois até agora não programei nada, nem aqueles desafios de achar numero par, mas eu consegui acompanhar a explicação, dhta certo que eu não conseguiria resolver isso, mas acompanhando a explicação eu entendi o que foi falado
2:15 é um exemplo ruim já que tem dois oito no mesmo bloco 3x3 se existe a dúvida entre dois números é pq não foi resolvido o suficiente ou está errado
Mestre poderia fazer um vídeo de busca fonética e melhores implementações para padrão pt_br? Como vc tem uma visão muito boa, gostaria de vê uma possível solução.
Tenho quase certeza, mas quando temos inner loops e afins, mas a ordem de grandeza dele é constante (no caso do sudoku 9x9) a complexidade continua constante O(1) porque não há variação na entrada
Eu lembro que fiz um exercício parecido com esse que caiu numa prova do primeiro semestre de ciência da computação, mas se não me engano o o sudoku já vinha completo e precisava avaliar se a solução era válida ou não usando a estrutura de dados conjunto kkkkk
No proximo vídeo (quinta feira) eu falo dos detalhes, mas a partir de quinta eu vou atualizar a descrição de todos meus vídeos pra incluir o novo link, e anunciar também no linkedin e twitter :)
Eu entendo a sua frustração, mas eu achei um desafio interessante. Com certeza o que eles estão avaliando nem é a resolução ou não do "problema" mas sim a sua forma de modelar. Isso exige raciocínio lógico e uma abordagem cartesiana - dividir o problema em partes menores Crie abstrações do problema Crie código replicável Não repita código Crie funções Use meta linguagem São alguns conselhos para resolver o exercício
Adoro o algoritmo, atualmente comecei a jogar sudoku com minha namorada e comecei a ver algoritmos que resolvem sudoku, logo em seguida bem esse vídeo pra mim skskss
Essas regras é usada mais no back? Trabalho com mobile e nunca vi ou fiz teste tecnico com algo tão complexo como esses exercicios que vc resolve. Gosto de ver suas soluções mas sinceramente nunca precisei a não ser quando vou tentar resolver algo em algum site de exercicios.
Em big tech acho que faz sentido aplicar isso. Foda é consultoria sem vergonha que so vende crud exigir isso no processo pra pagar pjotinha 8k. Enfim, tenho uma entrevista numa empresa de fora semana que vem e iria comprar o curso hoje. Vou esperar!
Acho essa solução usando só um hash mais simples, a mudança seria isso: var rowKey = board[i][j] + "found in row " + i; var colKey = board[i][j] + "found in col " + j; var square = board[i][j] + "found in square " + i / 3 + "-" + j / 3;
E so implementar 4 funcoes: List extractRow(int pos) -> extrai os elementos da linha em uma lista List extractCol(int pos) -> extrai os elementos da coluna em uma lista List extractCube(int pos) -> extrai os elementos do cubo em uma lista bool validateNumbers(List values) -> valida se tem elementos nao pontos repetidos Entao basta chamar como um template de 4 passos: for(i, 0..9) if(!validateNumbers(extractRow(i))) return false for(i, 0..9) if(!validateNumbers(extractCol(i))) return false for(i, 0..9) if(!validateNumbers(extractCube(i))) return false return true
Eu não achei nada de errado nesse problema as vezes eles só utilizam uma estrutura (neste caso, a estrutura do sudoku) para explicar mais facilmente um problema, não quer dizer que todas as regras do sudoku deverão ser levadas em consideração. Acho que, inclusive, eles fizeram essas alterações para facilitar na hora de resolver o código talvez os entrevistadores faziam essa pergunta, os candidatos resolviam em rapidamente para que depois pudesse ter o 'follow-up question' a respeito das possibilidades de resolução do sudoku
Iniciante em programação e caí nesse vídeo aqui Não achei esse problema muito complexo, acho que pessoas que entendem de Sudoku nem teriam muita vantagem pois pensaria de cara em ter que fazer a verificação se os jogos são resolvíveis, e no nervosismo de uma entrevista, poderia passar batido a observação no leetcode. O raciocínio da divisão por inteiro eu peguei de cara quando vi o problema, talvez por ter facilidade com matemática, não achei nada demais. Conceitos de programação que eu não sabia antes desse vídeo foram os defaultdict e o set, realmente ideal para lidar com problemas de duplicatas, eu na minha profunda ignorância iria utilizar listas e isso reduziria demais o desempenho.
Fala Galego, é uma pergunta q não tem nada a ver com o vídeo, mas tô curioso pra saber o que aparelho é esse que está usando... Já vi outras pessoas usarem, mas não encontrei nada na internet sobre
A dica que dou é: parem de fazer cursos e programem de verdade. Esses desafios aparecem na prática a todo momento, mas fujam dos cruds. Programem jogos... Entendam: transacionar dados exige zero do seu poder cognitivo. Desafios aparecem em programação de jogos e outros softwares mais complexos... faça um tetris, faça um snake, um pacman, um programa de xadrez, etc...
Mal escrito mesmo, o exercício é simples e o enunciado é o maior desafio. Mas eu prefiro um Array continuo em que cada célula é i+j*8 sendo que i vai de 0 a 8 e j vai de 0 a 8 😂 pra caixa é a mesma solução.
Pô, isso me lembra quando eu fiz um solucionador de sudoku quando eu tinha uns 14 anos kkkkk(vendo o código hoje, ele tem bastante coisa desnecessariamente complicada, mas funciona)
Essa questão caiu no meu Loop da amazon no meio do ano passado, e eu tinha assistido um dia antes a resolução de um youtuber chamado NeetCode e acabei conseguindo fazer a questão, mas eu tenho certeza que essa questão mostrou para o meu entrevistador que eu só copiei a solução de alguém... Inclusive ele reclamou muito que usei r para rows e c para columns e disse que meu codigo nao estaria read-to-production porque eu não dava nomes claros para as minhas variaveis (em um live coding de 30 minutos). Nesse mesmo loop tive uma entrevista que foi para fazer o famoso LRU Cache do leetcode, com um indiano em ingles (apesar de eu falar ingles, o nervosismos de estar num loop de uma bigtech + um problema super Hard me fudeu). As vezes eu acho que esses problemas de leetcode não mostram nada. Não adianta eu saber resolver tudo em O(n) ou log(n) e no trabalho eu ser um baita de um cuzão e não aceitar um review honesto no meu PR. Concordo que existem problemas que mostram se voce sabe usar um two pointer ou um hash ou uma heap e isso é util... mas sinceramente, quando é que tu vai implementar uma Aho-Corasick?? Em qual ambiente de trabalho de verdade vc vai ter 30 minutos para resolver um problema em tempo e memoria otima e isso vai fazer toda a diferença? Cara, se você está nesse ambiente de trabalho e consegue, eu tenho certeza que você não deveria estar aplicando pra SDE II e ganhando "só" 200k ano. Se você resolve um problema complexo em tempo otimo em 30 minutos você tem que tá ganhando milhão.
Acho que não é muito sobre usar as coisas, mas alguém que se deu o trabalho de aprender Aho pra resolver problemas não é qualquer pessoa, convenhamos.
Sobre o salário, já é bem maior do que a maioria da área kk mas a Amazon é conhecida por pagar menos mesmo.
Implicar com r e c foi meio sem noção mesmo
É tipo aprender bhaskara, você provavelmente n vai usar, mas ajuda. Adesenvolver a logica matemática, no caso desses leetcode, mostra q vc entende de logica de programação, não é só majs um que cospe codigos que qualquer IA saberia fazer.
Mas concordo que eles exageram nesses testes
@@YuriXbrOficial na real bhaskara não ajuda a desenvolver lógica matemática, justamente por ser contra intuitiva, o que ajuda a desenvolver a lógica são operações que seu cerebro consegue entender como montar a equação para descobrir o resultado ou consegue dissecar a equação e explicar o motivo de cada operação
desculpa a ignorancia, o que é loop da amazon?
Cara, tua solução com a divisão por intereiro foi genial. E realmente, para um livecode olhando para a performance, eu diria que, a depender do tempo para resolução, poderia até ser possível e tranquilo. Algo como 2H, 2h:30min, acho que daria para fazer. Isso se o sujeito já tivesse um certo (pensamento elevado) na resolução de problemas do tipo.
por que ninguém comenta da semelhanca do galego com o cara do meme: "voce ja sonhou com este homem?"
eu estudava programação, mas parei e decidi fazer outra coisa mas ainda gosto de ver seus vídeos, são muito bons e explicativos.
To na mesma kkkkkk
Fiquei curioso para saber o motivo da parada e o que fazes agora. :D
@@avloggerfinger9050 Eu estou estudando pro ENEM pra passar em medicina, o motivo de eu ter parado é simplesmente por que eu não faço a mínima ideia de como ingressar nessa área do mercado de trabalho e era bem inseguro sobre minhas habilidades. Basicamente eu não sabia o que eu precisava saber pra conseguir trabalhar eu apenas estudava um monte de coisa.
@@tadashi1870isso é bem ruim, mas esse seu problema tbm é aplicavel a medicina, especialmente se teu background educacional foi ruim, como o meu foi 😂
@tadashi1870 Aata, é bem confuso mesmo. Ainda mais com um monte de gente vendendo cursinho prometendo isso e aquilo, sksksk. Bom, desejo-te sucesso no Enem, hehe.
Ps: Vou fazer também. ;)
Amanhã vou fazer a última fase do processo seletivo da Amazon para SDE II. Estou preparado mas nervoso e com um pouco de medo, quero muito passar. Se esse problema cair, vou ficar feliz! Ótimo conteúdo, abraços
Quem diria que programar um clone de minecraft iria me ajudar a resolver uma questão da Amazon.
Kk
Trabalhar com voxel é muito viciante
@@jarusca3933vox o que? Nuca nem vi
Muito bom....
Aqui na expectativa do curso!
Sugestão que não sei se já faz no seu curso mas seria legal qd tiver um problema fazer primeiro o brute force que é mais "simples" de entender e depois num outro vídeo ou algo do tipo mostrar a solução otimizada.
acabei de cair nesse video de paraqueda pos fiquei curioso e acabei curtindo a sua didatica e aprendir muita coisa Obg
Como vcs pesquisam no leetcode pra achar os tipos de questões que mais caem em entrevistas?
X (Tweeter)
Vídeo denso!! muito conteúdo proveitoso; essa questão é hard.
Eu faço exatamente o pensamento que voce fez na resolução pra resolver o próprio sudoku
Mesmo sem ter contato com leet code eu ja havia pensado em solucionar dessa forma
por incrivel que pareça eu apesar de " estudar programação " eu não posso dizer que nem iniciante sou pois até agora não programei nada, nem aqueles desafios de achar numero par, mas eu consegui acompanhar a explicação, dhta certo que eu não conseguiria resolver isso, mas acompanhando a explicação eu entendi o que foi falado
não seria mat[2][7] para acessar o item 6 no 5:25?
ele se corrigiu nesse minuto aqui 7:46
2:15 é um exemplo ruim já que tem dois oito no mesmo bloco 3x3 se existe a dúvida entre dois números é pq não foi resolvido o suficiente ou está errado
Mestre poderia fazer um vídeo de busca fonética e melhores implementações para padrão pt_br?
Como vc tem uma visão muito boa, gostaria de vê uma possível solução.
Já fiz entrevista pra Amazon e caiu 2 questões sobre arrays bidimensionais, na época achei hard pra caralho kkk hoje vejo que não era grandes coisas
Muito bom o vídeo. Creio que no minuto 5:30, para acessar o valor, seria mat[2][7], visto que o array começa na posição 0.
Faz um resolvendo o leetcode do triangulo de pascal. Parabens pelo conteúdo!
Tenho quase certeza, mas quando temos inner loops e afins, mas a ordem de grandeza dele é constante (no caso do sudoku 9x9) a complexidade continua constante O(1) porque não há variação na entrada
Isso é o estado da arte do LeetCode
Eu lembro que fiz um exercício parecido com esse que caiu numa prova do primeiro semestre de ciência da computação, mas se não me engano o o sudoku já vinha completo e precisava avaliar se a solução era válida ou não usando a estrutura de dados conjunto kkkkk
nice, ansioso pelas novidades no curso!
Boa tarde, Galego. Qual vai ser a nova plataforma do seu curso? E por onde posso ficar sabendo do lançamento na hora? Estou interessado
No proximo vídeo (quinta feira) eu falo dos detalhes, mas a partir de quinta eu vou atualizar a descrição de todos meus vídeos pra incluir o novo link, e anunciar também no linkedin e twitter :)
@GutoGalego Tranquilidade, até quinta então
Passou dos 10 minutos, não dá pra entender mais nada kkkkkk
Eu entendo a sua frustração, mas eu achei um desafio interessante. Com certeza o que eles estão avaliando nem é a resolução ou não do "problema" mas sim a sua forma de modelar. Isso exige raciocínio lógico e uma abordagem cartesiana - dividir o problema em partes menores
Crie abstrações do problema
Crie código replicável
Não repita código
Crie funções
Use meta linguagem
São alguns conselhos para resolver o exercício
Adoro o algoritmo, atualmente comecei a jogar sudoku com minha namorada e comecei a ver algoritmos que resolvem sudoku, logo em seguida bem esse vídeo pra mim skskss
Video Sensacional !
Uma dúvida que app é esse usado para desenhar?
acho que é o excalidraw
Essas regras é usada mais no back? Trabalho com mobile e nunca vi ou fiz teste tecnico com algo tão complexo como esses exercicios que vc resolve. Gosto de ver suas soluções mas sinceramente nunca precisei a não ser quando vou tentar resolver algo em algum site de exercicios.
Em big tech acho que faz sentido aplicar isso. Foda é consultoria sem vergonha que so vende crud exigir isso no processo pra pagar pjotinha 8k.
Enfim, tenho uma entrevista numa empresa de fora semana que vem e iria comprar o curso hoje. Vou esperar!
Manda uma DM ali no instagram (augusto.galego) ou no linkedin. Quem tá preparando pra entrevista agora eu consigo disponibilizar acesso antecipado
Meto aquele for encadeado com índice i, o segundo com j de Java e no final vou errar tudo.
Hahahahah
Convenhamos, ainda bem que não interessa se é resolvivel kkkk
tua didática é sinistra
mas uma matrix nao começa com 0? desde a horizontal e vertical? 5:27
Acho essa solução usando só um hash mais simples, a mudança seria isso:
var rowKey = board[i][j] + "found in row " + i;
var colKey = board[i][j] + "found in col " + j;
var square = board[i][j] + "found in square " + i / 3 + "-" + j / 3;
Beijo pra vó do Galego. 🤗
E so implementar 4 funcoes:
List extractRow(int pos) -> extrai os elementos da linha em uma lista
List extractCol(int pos) -> extrai os elementos da coluna em uma lista
List extractCube(int pos) -> extrai os elementos do cubo em uma lista
bool validateNumbers(List values) -> valida se tem elementos nao pontos repetidos
Entao basta chamar como um template de 4 passos:
for(i, 0..9) if(!validateNumbers(extractRow(i))) return false
for(i, 0..9) if(!validateNumbers(extractCol(i))) return false
for(i, 0..9) if(!validateNumbers(extractCube(i))) return false
return true
Eu não achei nada de errado nesse problema
as vezes eles só utilizam uma estrutura (neste caso, a estrutura do sudoku) para explicar mais facilmente um problema, não quer dizer que todas as regras do sudoku deverão ser levadas em consideração. Acho que, inclusive, eles fizeram essas alterações para facilitar na hora de resolver o código
talvez os entrevistadores faziam essa pergunta, os candidatos resolviam em rapidamente para que depois pudesse ter o 'follow-up question' a respeito das possibilidades de resolução do sudoku
obs: vi o video inteiro agora e fiz uma solução "menos elegante" e mais naive, porém com tempo ótimo também (0ms, beats 100%) e espaço beats 35
Cara achei esse exercício bem fácil, fiz ele ano passado no primeiro semestre da facul, caiu em um contest entre da faculdade
Iniciante em programação e caí nesse vídeo aqui
Não achei esse problema muito complexo, acho que pessoas que entendem de Sudoku nem teriam muita vantagem pois pensaria de cara em ter que fazer a verificação se os jogos são resolvíveis, e no nervosismo de uma entrevista, poderia passar batido a observação no leetcode.
O raciocínio da divisão por inteiro eu peguei de cara quando vi o problema, talvez por ter facilidade com matemática, não achei nada demais. Conceitos de programação que eu não sabia antes desse vídeo foram os defaultdict e o set, realmente ideal para lidar com problemas de duplicatas, eu na minha profunda ignorância iria utilizar listas e isso reduziria demais o desempenho.
Mano, já tive que fazer um jogo que fazia Sudoku pra prova da faculdade, vou te falar, como queimei neurônio pra resolver esse troço.
Opa galego, quem tinha o curso na udemy, como vai ser o acesso na plataforma nova?
Vai ter um formulariozinho pra preencher com o e-mail que vc usou na Udemy e eu dou acesso gratuito :)
Fala Galego, é uma pergunta q não tem nada a ver com o vídeo, mas tô curioso pra saber o que aparelho é esse que está usando... Já vi outras pessoas usarem, mas não encontrei nada na internet sobre
Whoop é o nome. É uma pulseira pra medir batimentos cardiacos e etc
Augusto Já saiu a nova plataforma onde vai ser o curso?
Quinta feira sai
Fico imaginando que deve ter ficando confuso pra iniciantes vc ter usado as palavrase set (conjunto) e sete (numero) ao mesmo tempo nas mesmas frases
Mestre galego, o meu acesso é pelo udemy business, como eu fico ?😢
Oi, Qual video que você fala "mal" do continue? queria ver quais são as alternativas
se for o preço da udemy(30+-) eu compro sim
nao diminuindo o valor do curso que ele terá, eu que sou pobre mesmo
na Udemy nunca foi 30
Alguém sabe o site que ele usa para ver essas questões?
Tendi nada, vou ter que rever algumas vezes 😂
Mestre, essa versão nova do curso já vai vir com as melhorias que vc tinha dito uma vez no twitter?
@@Blaster938 isso, ao longo da primeira semana vou liberando aulas do modulo bonus!
acho um problema classico para logica de programação. Não acho dificil, mas é chatinho
Que site é esse? Alguém poderia me dizer, por favor?
tmj galegão :)
A dica que dou é: parem de fazer cursos e programem de verdade.
Esses desafios aparecem na prática a todo momento, mas fujam dos cruds. Programem jogos... Entendam: transacionar dados exige zero do seu poder cognitivo. Desafios aparecem em programação de jogos e outros softwares mais complexos... faça um tetris, faça um snake, um pacman, um programa de xadrez, etc...
O que acontece com quem ja comprou?
@@renanalves5687 tem um formlariozinho, vai receber acesso na nova plataforma gratuitamente, e tambem continuar com o acesso na udemy
Vou começar a fazer essa questão 36.
até quinta-feira
Mal escrito mesmo, o exercício é simples e o enunciado é o maior desafio. Mas eu prefiro um Array continuo em que cada célula é i+j*8 sendo que i vai de 0 a 8 e j vai de 0 a 8 😂 pra caixa é a mesma solução.
Vou começar a fazer essa questão. Tentarei fazer em 10 minutos. Se eu não conseguir, voltarei no comentário para avisar.
Conseguiu ?
Ja passou 23
ele não voltou, então conseguiu resolver em 10 minutos
Conseguiu um casset*
box[(r,//3 c//3)] eu nunca tinha visto esse tipo de acesso a dicts, qual a lógica?
A chave é uma tupla, é só isso. Ao invés da chave ser um int unico, ela é tipo (0,2)
@GutoGalego entendi moral, vlw
ainda bem que sou front kkk Deus me livre disso ai
Sudoku ❤
Pô, isso me lembra quando eu fiz um solucionador de sudoku quando eu tinha uns 14 anos kkkkk(vendo o código hoje, ele tem bastante coisa desnecessariamente complicada, mas funciona)
Eu como gerente de TI acho muito boa essa questão, pois separa desenvolvedores que fazem o que é esperado dos que fazem o que querem.
"sou adepto do go-horse no leetcode"
SIM mano