수치의 정수 제곱 - jzoffer
면접 문제 에 대해 만약 에 임의의 큰 숫자 를 요구한다 면 이 문 제 는 하나의 큰 문제 이다. 이때 우 리 는 문자열 이나 배열 로 큰 숫자 를 표시 하여 넘 치지 않도록 특수 한 데이터 구조 로 숫자 를 표시 해 야 한다.
우선 고려 해 야 할 것 은 일반 기능 테스트 의 테스트 사례 이다.
그 다음으로 각종 경계 값 의 테스트 사례 를 고려 해 야 한다.예 를 들 어 귀속 종료 경계
마지막 으로 가능 한 여러 가지 오류 입력, 부정적인 테스트 사례 도 고려 해 야 한다.
제목: 함수 double Power (double base, int exponent) 를 실현 하고 base 의 exponent 를 구 합 니 다.라 이브 러 리 함 수 를 사용 할 수 없 으 며, 동시에 대수 문 제 를 고려 할 필요 가 없다.
우 리 는 나 누 기 2 대신 오른쪽 연산 자 를 사용 하여 나머지 연산 자 (%) 를 비트 와 연산 자로 대체 하여 하나의 숫자 가 홀수 인지 짝수 인지 판단 했다.비트 연산 의 효율 은 곱셈 법 과 나머지 연산 의 효율 보다 훨씬 높다.
g_invalid_input = False
class Solution:
def power_with_unsigned_exponent(self, base, exponent):
''' '''
result = 1.0 # 0, , 1, 0
for _ in range(exponent):
result *= base
return result
def fast_power_with_unsigned_exponent(self, base, exponent):
''' , , '''
if exponent == 0:
return 1.0
if exponent == 1:
return base
ret = self.fast_power_with_unsigned_exponent(base, exponent >> 1)
ret *= ret
if exponent & 0x1:
ret = ret * base
return ret
def power(self, base, exponent):
global Solution.g_invalid_input
#
g_invalid_input = False
if base = 0 and exponent < 0:
g_invalid_input = True
return 0.0
unsigned_exponent = exponent if exponent >= 0 else -exponent
ret = self.power_with_unsigned_exponent(base, unsigned_exponent)
if exponent < 0:
ret = 1.0 / ret
return ret
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.