javascript - 프로그래밍, 알고리즘 문제
PHP中文网
PHP中文网 2017-06-12 09:25:56
0
4
967

엊그제 면접 질문이 있었습니다
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中文网
PHP中文网

认证高级PHP讲师

모든 응답(4)
我想大声告诉你

첫 번째 질문을 이해하지 못합니다. 두 숫자가 짝이고 짝수가 홀수보다 먼저 온다는 뜻인가요?

두 번째 질문은 간단합니다. 루프를 사용할 수 없다면 배열 반복을 사용하세요.

代言

그러니까 phpforeach상관없어요(웃음

)

재귀함수를 작성해 달라고 하는 것이 면접관의 의도인 것 같은데요? 글쎄요.

Ty80

엊그제 면접 질문이 있었습니다
js, python, java, c, c++ 등의 언어를 사용하여 100억 개의 데이터를 10초 안에 계산해서 완성(3초 안에만)하면 짝수가 옵니다. 홀수 앞
형식은 다음과 같습니다
1, 2, 3, 4, 5
출력 결과는
2, 1, 4, 3, 6, 5,
질문 2: 1의 코드 위에는 for while 키워드를 사용할 수 없습니다. from 100억 중에서 소수를 모두 가져옵니다(시간은 3초를 초과할 수 없음)
어떻게 할까요?


당분간은 사용할 수 없으니까

그렇다면 재귀적 성능만으로는 충분하지 않습니다. . . 하지만 아직도 일부를 사용하고 있어요. . For Performance

영리한 방법이 있을 수도 있습니다

. . . 100亿 사이즈가 나와야 합니다. 아직 찾지 못했습니다.

코드

100억은 좀 크네요. 먼저 100,000부터 가져가겠습니다

으아악

이런 방법으로 길이가 100,000인 자연수 배열을 얻을 수 있습니다.


다음

  1. 짝수 먼저, 홀수 마지막

관찰 결과 奇数 + 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억개를 실행하는 것은 어려울 것으로 추정됩니다.

문제 해결에 집중하세요.

링크

숫자가 소수/소수인지 판별 - 일반적인 판단 알고리즘부터 효율적인 판단 알고리즘 아이디어까지

Ty80

우선 위층에 소수를 찾는 알고리즘을 알려주셔서 감사합니다. 결과와 코드를 게시하겠습니다. (1천만, 1억 개의 브라우저만 직접 폭발했으며 재귀를 사용하여 소수를 찾을 수 없습니다. (내 테스트 결과) 그렇지 않으면 폭발되어 반복만 가능합니다.)

브라우저 결과:

노드의 결과:

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿