Как стать автором
Обновить
0
Spice IT Recruitment
ИТ-специализированное кадровое агентство

Выпуск#28: ITренировка — актуальные вопросы и задачи от ведущих компаний

Время на прочтение5 мин
Количество просмотров2.8K
Привет!
Сегодня в нашей рубрике задачи с собеседований в LinkedIn.

image

Если с ходу-с лету решите их все и всерьез задумаетесь о том, чтобы податься в LinkedIn — рекомендуем вам послушать выпуск нашего подкаста.

Он, правда, про продактов, но в нем мы подробно расспрашиваем у Дмитрия Бердникова — Strategy & Operations Director LinkedIn’а про все этапы собеседований в компанию.

Слушайте, где удобно ↓
Apple Подкасты
Google Подкасты
Яндекс.Музыка
Или на странице подкаста

И кстати, ответы на предыдущие задачки уже опубликованы! Сверяйтесь с ними.

Вопросы


1. Monty Hall problem
Suppose you’re on a game show, and you’re given the choice of three doors: Behind one door is a car; behind the others, goats. You pick a door, say No. 1, and the host, who knows what’s behind the doors, opens another door, say No. 3, which has a goat. He then says to you, “Do you want to pick door No. 2?”
Is it to your advantage to switch your choice?

image
Перевод
Предположим, вы находитесь на игровом шоу, и вам предоставляется выбор из трех дверей: за одной дверью-автомобиль; за другими-козы. Вы выбираете дверь, скажем, №1, и ведущий, который знает, что за дверями, открывает другую дверь, скажем, №3, в которой есть коза. Затем он говорит вам «Хотите ли вы выбрать дверь №2?»
Выгодно ли вам поменять свой выбор?

2. Find the Jar with contaminated pills
You have 5 jars of pills. Each pill weighs 10 grams, except for contaminated pills contained in one jar, where each pill weighs 9 grams. Given a scale, how could you tell which jar had the contaminated pills in just one measurement?

Перевод
У вас есть 5 банок таблеток. Каждая таблетка весит 10 граммов, за исключением заражённых таблеток, содержащихся в одной банке, где каждая таблетка весит 9 граммов. У вас есть весы, как вы смогли бы определить, в какой банке были зараженные таблетки, всего за одно взвешивание?

Задачи


1. Distinct Substrings
Given a string S consisting of uppercase alphabetic characters. Return the number of different substrings of size 2 that appear in S as contiguous substrings.

Input: The first line contains 'T' denoting the number of testcases. Then follows description of test cases. The next T lines contains the string S.

Output: Output the number of different substrings of size 2 in S.

Constraints:
1<=T<=50
1<=|S|<=100


Example:
Input :

2
ABCAB
XYZ


Output:
3
2


Explanation: For «ABCAB», the three distinct substrings of size 2 are «AB», «BC» and «CA». For «XYZ», the two distinct substrings of size 2 are «XY» and «YZ».

Перевод
Дана строка S, состоящая из прописных буквенных символов. Верните количество различных подстрок размера 2, которые отображаются в S как смежные подстроки.

Ввод: Первая строка содержит 'T', обозначающее количество тестов. Далее следует описание тестов. Следующие T строк содержат строку S.

Выход: Выведите единственное число — количество различных подстрок размера 2 в строке S.

Ограничения:
1< = T< = 50
1<= / S / < = 100


Пример:
Ввод:

2
ABCAB
XYZ


Выход:
3
2


Пояснение: для «ABCAB» тремя различными подстроками размера 2 являются «AB», «BC» и «CA». Для «XYZ», две отдельные подстроки с размером 2 это «XY» и «YZ».

2. Longest consecutive subsequence
Given an array arr[] of positive integers. Find the length of the longest sub-sequence such that elements in the subsequence are consecutive integers, the consecutive numbers can be in any order.

Input:
The first line of input contains T, number of test cases. First line of line each test case contains a single integer N.
Next line contains N integer array.

Output:
Print the output of each test case in a seprate line.

Constraints:
1 <= T <= 100
1 <= N <= 105
0 <= a[i] <= 105


Example:
Input:

2
7
2 6 1 9 4 5 3
7
1 9 3 10 4 20 2


Output:
6
4


Explanation:
Testcase 1:
The consecutive numbers here are 1, 2, 3, 4, 5, 6. These 6 numbers form the longest consecutive subsquence.

Testcase2: 1, 2, 3, 4 is the longest consecutive subsequence.

Перевод
Дан массив arr[] положительных целых чисел. Найти длину самой длинной подпоследовательности такой, что элементы в подпоследовательности являются последовательными целыми числами, последовательные числа могут быть в любом порядке.

Ввод:
Первая строка ввода содержит T, количество тестовых случаев. Первая строка каждого теста содержит одно целое число N.
Следующая строка содержит N целых массивов.

Выход:
Выведите выходные данные каждого теста в отдельной строке.

Ограничения:
1 < = T < = 100
1 < = N < = 105
0 <= a[i] < = 105


Пример:
Ввод:

2
7
2 6 1 9 4 5 3
7
1 9 3 10 4 20 2


Выход:
6
4


Объяснение:
Тест 1:
последовательные номера здесь 1, 2, 3, 4, 5, 6. Эти 6 чисел образуют самый длинный последовательный подзапрос.

Тест 2: 1, 2, 3, 4 — Самая длинная последовательная подпоследовательность.

3. Distinct palindromic substrings
Given a string of lowercase ASCII characters, find all distinct continuous palindromic sub-strings of it.

Input:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains a string.

Output:
Print the count of distinct continuous palindromic sub-strings of it.

Constraints:
1<=T<=10^5
1<=length of string<=10^5


Example:
Input:

2
abaaa
geek


Output:
5
4

Перевод
Дана строка строчных символов ASCII, найдите все ее отдельные непрерывные палиндромные подстроки.

Ввод:
Первая строка входных данных содержит целое число T, обозначающее количество тестов. Затем следуют тесты. Каждый тест содержит строку.

Выход:
Выведите количество отдельных непрерывных палиндромных подстрок этого типа.

Ограничения:
1< = T<=10^5
1< = длина строки<=10^5


Пример:
Ввод:

2
abaaa
geek


Выход:
5
4


Ответы


Вопрос 1
Если вы поменяете свой выбор, вы получите автомобиль с вероятностью 2/3. Так что смена выбора в такой ситуации увеличивает вероятность выигрыша.
Подробнее описано на Википедии. Также можно изучить данную лекцию. В дополнение есть онлайн-симуляция задачи Монти Хола.

Вопрос 2
Возьмите 1 таблетку из банки 1, 2 таблетки из банки 2, 3 таблетки из банки 3, 4 таблетки из банки 4 и 5 таблеток из банки 5. Положите все эти 15 таблеток на весы. Правильный вес-150 (15*10). Но в одной из банок есть зараженные таблетки. Так что вес точно будет меньше 150. Если вес 149, то банка 1 имеет зараженные таблетки, потому что есть только одна зараженная таблетка. Если вес 148, то банка 2, Если вес 147, то банка 3, Если 146, то банка 4, Если 145, то банка 5.

Задача 1
Решение на 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))

Задача 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;
	   
	}
}

Задача 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;
}
Теги:
Хабы:
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Публикации

Информация

Сайт
www.spiceit.ru
Дата регистрации
Дата основания
2009
Численность
31–50 человек
Местоположение
Россия

Истории