Google에서 묻는 코딩 인터뷰 질문
The challenge on Coderbyte
다음은 지난 주 문제를 해결하는 인기 있는 방법입니다.
두 가지 인덱스 접근 방식:
보다 최적화된 솔루션(숫자 문자열이 정렬되기 때문에 가능한 솔루션)에는 두 문자열의 시작 부분에서 두 개의 인덱스를 초기화하는 것이 포함됩니다. 첫 번째 문자열의 인덱스에 있는 요소가 두 번째 문자열의 인덱스에 있는 요소와 같은지, 작은지 또는 큰지 확인하십시오. 값이 같으면 결과 배열에 값을 푸시합니다. 문자열이 정렬되기 때문에 첫 번째 문자열의 요소가 두 번째 문자열의 요소보다 작으면 첫 번째 요소가 두 번째 문자열에 존재하지 않는다는 것을 확인할 수 있습니다. 따라서 첫 번째 인덱스를 증가시켜 다음 값을 볼 수 있습니다. 첫 번째 문자열의 요소가 두 번째 문자열의 요소보다 크면 두 번째 문자열의 값이 첫 번째 문자열에 존재하지 않고 다음 값을 보기 위해 두 번째 인덱스를 증가시킬 수 있습니다. 이것은 코드에서 더 명확하게 볼 수 있습니다!
function intersection (arr) {
const inBothArrays = []
const [arr1, arr2] = arr.map((str) => str.split(', ').map((e) => parseInt(e)))
let index1 = 0
let index2 = 0
while (index1 < arr1.length && index2 < arr2.length) {
const elem1 = arr1[index1]
const elem2 = arr2[index2]
if (elem1 === elem2) {
inBothArrays.push(elem1)
index1++
index2++
} else if (elem1 > elem2) {
index2++
} else if (elem1 < elem2) {
index1++
}
}
return inBothArrays.join(',')
}
예를 들어:
intersection([“3, 4, 7, 11, 15”, “1, 3, 5, 8, 11”]);
를 호출하면 함수가 “3,11”
를 반환해야 합니다.이것을 좀 더 명확하게 할 수 있는 그림이 있습니다.
이 솔루션은 배열이 정렬되어 있기 때문에 작동한다는 것을 기억하십시오. 이 솔루션의 시간 복잡도는
O(n+m)
입니다.이번 주 도전:
이번 주에는 실제 Google 전화 화면 인터뷰에서 제공된 코딩 문제를 해결할 것입니다. 코드를 제출하려면 Coderbyte으로 이동하십시오!
각 문자열이 쉼표로 구분된 키 누름을 나타내는 두 개의 문자열을 포함하는 배열을 사용하는 함수를 작성하십시오. 이 문제의 경우 키 누름은 인쇄 가능한 문자 또는 백스페이스(
-B
로 표시됨)일 수 있습니다. 함수는 두 개의 키 누름 문자열이 동일한지 여부를 결정해야 합니다.백스페이스가 선행 문자 하나를 지우도록 하여 이러한 키 누르기 문자열에서 인쇄 가능한 문자열을 생성할 수 있습니다. 동일한 인쇄 가능한 문자열을 생성하는 경우 두 개의 키 누르기 문자열을 동등하게 고려하십시오. 예를 들어:
checkEquivalentKeypresses(["a,b,c,d", "a,b,c,c,-B,d"]) // true
checkEquivalentKeypresses(["-B,-B,-B,c,c", "c,c"]) // true
checkEquivalentKeypresses(["", "a,-B,-B,a,-B,a,b,c,c,c,d"]) // false
즐기세요 그리고 당신은 이것을 얻었습니다 !!
뉴스레터 📫
우리는 큰 것을 발표할 때마다 작은 기능 공개 스니펫을 보낼 것이므로 우리 커뮤니티는 우리가 새로운 것을 발표할 때 가장 먼저 알게 됩니다. Give us your email here 그러면 "최초로 알아야 할"목록에 귀하를 추가하겠습니다. :)
Reference
이 문제에 관하여(Google에서 묻는 코딩 인터뷰 질문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/coderbyte/a-google-coding-interview-question-4h0f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)