엊그제 면접 질문이 있었습니다
js, python, java, c, c++ 등의 언어를 사용하여 100억 개의 데이터를 10초 안에 계산해서 완료(3초 이내에만), 짝수는 앞에 와주세요 홀수
형식은 다음과 같습니다
1, 2, 3, 4, 5
출력 결과는
2, 1, 4, 3, 6, 5,
질문 2: 1의 코드에서 다음이 필요합니다. for while 키워드는 사용할 수 없습니다. 100부터 시작합니다. 1억 중에서 소수를 모두 구합니다. (시간은 3초를 초과할 수 없습니다.)
어떻게 할까요?
첫 번째 질문을 이해하지 못합니다. 두 숫자가 짝이고 짝수가 홀수보다 먼저 온다는 뜻인가요?
두 번째 질문은 간단합니다. 루프를 사용할 수 없다면 배열 반복을 사용하세요.
그러니까
)php
的foreach
상관없어요(웃음재귀함수를 작성해 달라고 하는 것이 면접관의 의도인 것 같은데요? 글쎄요.
당분간은 사용할 수 없으니까
그렇다면 재귀적 성능만으로는 충분하지 않습니다. . . 하지만 아직도 일부를 사용하고 있어요. .
For Performance
영리한 방법이 있을 수도 있습니다
. . .
100亿
사이즈가 나와야 합니다. 아직 찾지 못했습니다.코드
100억은 좀 크네요. 먼저 100,000부터 가져가겠습니다
으아악이런 방법으로 길이가 100,000인 자연수 배열을 얻을 수 있습니다.
다음
짝수 먼저, 홀수 마지막
관찰 결과
으아악奇数 + 1
、偶数 - 1
괜찮다는 것을 알았습니다첫 번째 질문을 완료하세요
스크린샷 원
다음
다음 질문은 위의 내용을 바탕으로 소수를 구하는 것, 즉
에서 모든 소수를 구하는 것입니다.zs
소수에 관한 문제를 찾아봤는데 다른 사람이
质数分布在 6 的倍数的左边或者右边
그런 다음 각 6의 배수의 왼쪽과 오른쪽을 순회하여 소수인지 확인하면 됩니다.링크: 숫자가 소수/소수인지 판단하기 - 일반적인 판단 알고리즘부터 효율적인 판단 알고리즘 아이디어까지
으아악스크린샷 2
맞을지는 모르겠지만...
하지만
小于 6
의 소수 1 2 3 5를 별도로 다시 넣어야 합니다. (여기에는 철자가 없습니다)성능
위에 적힌 코드를 준수하세요
으아악테스트
으아악1000 万
결과는 사진과 같습니다13.8
초가 걸렸습니다.13.8
秒 不可能做到10 + 3
秒内完成100亿
의 볼륨을10 + 3
초 안에 완료하는 것은 불가능합니다.내 컴퓨터는
i5-4210M
12G
Chrome 58
JavaScript
는 이 성능을 달성할 수 없습니다.JavaScript
做不到这样的性能:100亿
个数字13
13
초 안에 숫자가 표시됩니다....여러
G
데이터...위 아이디어에 따르면, 심지어
C/C++
13초 안에 100억개를 실행하는 것은 어려울 것으로 추정됩니다.문제 해결에 집중하세요.
링크
숫자가 소수/소수인지 판별 - 일반적인 판단 알고리즘부터 효율적인 판단 알고리즘 아이디어까지
우선 위층에 소수를 찾는 알고리즘을 알려주셔서 감사합니다. 결과와 코드를 게시하겠습니다. (1천만, 1억 개의 브라우저만 직접 폭발했으며 재귀를 사용하여 소수를 찾을 수 없습니다. (내 테스트 결과) 그렇지 않으면 폭발되어 반복만 가능합니다.)
브라우저 결과:
노드의 결과:
으아악