Edição 28: Treinamento em TI - problemas e desafios atuais das principais empresas

Oi
Hoje em nossas tarefas de rubrica com entrevistas no LinkedIn.

imagem

Se em tempo real, resolva todos eles e pense seriamente em enviar para o LinkedIn, recomendamos que você ouça o lançamento de nosso podcast.

É verdade que se trata de produtos, mas perguntamos a Dmitry Berdnikov, diretor de estratégia e operações do LinkedIn, em detalhes sobre todas as etapas das entrevistas com a empresa.

Ouça onde for conveniente ↓
Podcasts da Apple
Podcasts do Google
Yandex.Music
Ou na página do podcast

E, a propósito, respostas para problemas anteriores já foram publicadas ! Verifique com eles.

Perguntas


1. Problema com Monty Hall
Suponha que você esteja em um game show e tenha a opção de três portas: Atrás de uma porta está um carro; atrás dos outros, cabras. Você escolhe uma porta, diz não. 1, e o anfitrião, que sabe o que há atrás das portas, abre outra porta, diz Não. 3, que tem uma cabra. Ele então diz para você: “Você quer abrir a porta não? 2?
É a sua vantagem mudar sua escolha?

imagem
Tradução
Suponha que você esteja em um game show e tenha a opção de três portas: uma porta de carro; para as outras cabras. Você escolhe a porta, digamos, número 1, e o apresentador, que sabe o que está por trás das portas, abre outra porta, digamos, número 3, na qual há uma cabra. Então ele diz: "Você quer escolher a porta número 2?"
É rentável para você mudar sua escolha?

2. Encontre o frasco com comprimidos contaminados
Você tem 5 frascos de comprimidos. Cada comprimido pesa 10 gramas, exceto os comprimidos contaminados contidos em um frasco, onde cada comprimido pesa 9 gramas. Dada uma escala, como você poderia dizer qual frasco continha as pílulas contaminadas em apenas uma medição?

Tradução
Você tem 5 latas de comprimidos. Cada comprimido pesa 10 gramas, com exceção dos comprimidos infectados contidos em um frasco, onde cada comprimido pesa 9 gramas. Você tem balanças, como seria capaz de determinar em qual banco as pílulas infectadas estavam em apenas uma pesagem?

As tarefas


1. Substrings Distintos
Dada uma sequência S que consiste em caracteres alfabéticos maiúsculos. Retorne o número de diferentes substrings de tamanho 2 que aparecem em S como substratos contíguos.

Entrada: A primeira linha contém 'T' indicando o número de casos de teste. Em seguida, segue a descrição dos casos de teste. As próximas linhas T contêm a sequência S.

Saída: gera o número de diferentes substrings de tamanho 2 em S.

Restrições:
1<=T<=50
1<=|S|<=100


Exemplo:
Entrada:
2
ABCAB
XYZ


Saída:
3
2


Explicação: Para "ABCAB", as três substrings distintas do tamanho 2 são "AB", "BC" e "CA". Para "XYZ", as duas substrings distintas do tamanho 2 são "XY" e "YZ".

Tradução
Dada a sequência S, que consiste em caracteres alfabéticos maiúsculos. Retorne o número de diferentes substrings de tamanho 2 que aparecem em S como substrings adjacentes.

Entrada: A primeira linha contém 'T', indicando o número de testes. A seguir, é apresentada uma descrição dos testes. As próximas linhas T contêm a sequência S.

Saída: imprima um único número - o número de diferentes substrings de tamanho 2 na sequência S.

Limitações:
1< = T< = 50
1<= / S / < = 100


Um exemplo:
Entrada:
2
ABCAB
XYZ


Saída:
3
2


Explicação: Para "ABCAB", as três substrings diferentes do tamanho 2 são "AB", "BC" e "CA". Para "XYZ", duas substrings separadas com tamanho 2 são "XY" e "YZ".

2. Subseqüência consecutiva mais longa
Dada uma matriz arr [] de números inteiros positivos. Encontre o comprimento da subseqüência mais longa, de modo que os elementos na subsequência sejam números inteiros consecutivos, os números consecutivos possam estar em qualquer ordem.

Entrada:
A primeira linha de entrada contém T, número de casos de teste. Primeira linha da linha, cada caso de teste contém um único número inteiro N.
A próxima linha contém N matriz inteira.

Saída:
Imprima a saída de cada caso de teste em uma linha separada.

Restrições:
1 <= T <= 100
1 <= N <= 105
0 <= a[i] <= 105


Exemplo:
Entrada:
2
7
2 6 1 9 4 5 3
7
1 9 3 10 4 20 2


Saída:
6
4


Explicação:
Caso de teste 1: Os números consecutivos aqui são 1, 2, 3, 4, 5, 6. Esses 6 números formam a subseqüência consecutiva mais longa.

Testcase2: 1, 2, 3, 4 é a subsequência consecutiva mais longa.

Tradução
Uma matriz de números inteiros positivos arr [] é fornecida. Encontre o comprimento da subsequência mais longa, de modo que os elementos na subsequência sejam números inteiros consecutivos , números consecutivos podem estar em qualquer ordem .

Entrada:
A primeira linha de entrada contém T, o número de casos de teste. A primeira linha de cada teste contém um número inteiro N.
A próxima linha contém N matrizes inteiras.

Saída:
Imprima a saída de cada teste em uma linha separada.

Limitações:
1 < = T < = 100
1 < = N < = 105
0 <= a[i] < = 105


Um exemplo:
Entrada:
2
7
2 6 1 9 4 5 3
7
1 9 3 10 4 20 2


Saída:
6
4


Explicação
Teste 1: Os números sequenciais aqui são 1, 2, 3, 4, 5, 6. Esses 6 números formam a subconsulta sequencial mais longa.

Teste 2: 1, 2, 3, 4 - A subsequência sequencial mais longa.

3. Substratos palindrômicos distintos
Dada uma sequência de caracteres ASCII em minúsculas, encontre todas as sub-sequências palindrômicas contínuas distintas.

Entrada:
A primeira linha de entrada contém um número inteiro T indicando o número de casos de teste. Em seguida, seguem os casos de teste T. Cada caso de teste contém uma sequência.

Saída:
Imprima a contagem de sub-strings palindrômicas contínuas distintas.

Restrições:
1<=T<=10^5
1<=length of string<=10^5


Exemplo:
Entrada:
2
abaaa
geek


Saída:
5
4

Tradução
Dada uma sequência de caracteres ASCII em minúsculas, localize todas as suas subseqüências individuais do palíndromo contínuo.

Entrada:
A primeira linha de entrada contém um número inteiro T, indicando o número de testes. Em seguida, os testes seguem. Cada teste contém uma linha.

Saída:
Imprima o número de substratos palindrômicos contínuos individuais desse tipo.

Limitações:
1< = T<=10^5
1< = <=10^5


Um exemplo:
Entrada:
2
abaaa
geek


Saída:
5
4


As respostas


Pergunta 1
Se você mudar sua escolha, receberá um carro com probabilidade de 2/3. Portanto, uma mudança de escolha em tal situação aumenta a probabilidade de vitória.
Mais detalhes estão descritos na Wikipedia . Você também pode estudar esta palestra . Além disso, há uma simulação on - line da tarefa de Monty Hall.

Questão 2
Tome 1 comprimido de uma lata 1, 2 comprimidos de uma lata 2, 3 comprimidos de uma lata 3, 4 comprimidos de uma lata 4 e 5 comprimidos de uma lata 5. Coloque todos esses 15 comprimidos em uma escala. O peso correto é 150 (15 * 10). Mas uma das latas infectou pílulas. Portanto, o peso definitivamente será menor que 150. Se o peso for 149, o Banco 1 infectou os comprimidos, porque há apenas um comprimido infectado. Se o peso for 148, pode 2, se o peso for 147, pode 3, se 146, pode 4, se 145, pode 5.

Tarefa 1
Solução Python
 for _ in range(int(input())): s = input() ls = [s[i:i+2] for i in range(0,len(s))] del ls[-1] ls = list(set(ls)) print(len(ls)) 

Tarefa 2
 #include<iostream> using namespace std; int main() { int t; cin >> t; while(t--) { int n; cin >> n; int ar[n]; for(int i=0;i<n;i++) cin >> ar[i]; //************************************* //Finding Max Element of Array int max=-1; for(int i=0;i<n;i++) { if(ar[i]>max) { max=ar[i]; } } //*************************************** int size = max+1; int hash[size]={0}; for(int i=0;i<n;i++) hash[ar[i]]++; //*************************************** /*for(int i=0;i<size;i++) cout << hash[i] << " "; cout << endl;*/ for(int i=0;i<n;i++) { if(hash[ar[i]]>1) hash[ar[i]]=1; } int count = 1,max_count = 1; for(int i=0;i<size;i++) { if(hash[i]==1 && hash[i+1]==1) count++; else { if(count>max_count) max_count=count; count = 1; } } cout << max_count << endl; } } 

Tarefa 3
 #include<bits/stdc++.h> using namespace std; bool ispalindrome(string s) { int i=0;int j=s.length()-1; while(i<j) { if(s[i]!=s[j]) return false; i++; j--; } return true; } int main() { //code int t; cin>>t; while(t--) { string s; cin>>s; vector<string>ans; for(int l=1;l<=s.length();l++) { for(int i=0;i<s.length()-l+1;i++) { if(ispalindrome(s.substr(i,l))) ans.push_back(s.substr(i,l)); } } sort(ans.begin(),ans.end()); ans.erase(unique(ans.begin(),ans.end()),ans.end()); cout<<ans.size()<<endl; } return 0; } 

Source: https://habr.com/ru/post/pt479320/


All Articles