소 객 - 검 지 offer 시리즈 문제 풀이: 숫자 가 정렬 배열 에 나타 난 횟수
10999 단어 우 객 - 검 지 offer 시리즈 문제 풀이
2. 데이터 구조: 2 분 검색
3. 문제 풀이: 방법 1: 폭력 법 이 널리 퍼 져 있 고 똑 같은 것 을 찾 으 면 누적 1.
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
#
count = 0
for i in range(len(data)):
if data[i] == k:
count += 1
return count
방법 2: 2 차 2 분 찾기 2 분 찾기 템 플 릿 은 소결 시리즈 - 2 분 찾기 템 플 릿 소결 (세 가지: 첫 번 째 기초, 두 번 째 를 파악 하 는 것 을 추천 합 니 다. 세 번 째 는 두 번 째 변형 입 니 다)
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
left, right = 0, len(data) - 1
while left <= right:
mid = left + (right - left) // 2
if data[mid] < k:
left = mid + 1
elif data[mid] > k:
right = mid - 1
else:
right = mid - 1
if left >= len(data) or data[left] != k:
l = -1
l = left
#
left, right = 0, len(data) - 1
while left <= right:
mid = left + (right - left) // 2
if data[mid] < k:
left = mid + 1
elif data[mid] > k:
right = mid - 1
else:
left = mid + 1
if right < 0 or data[right] != k:
r = -1
r = right
if l == -1 and r == -1:
return 0
return r - l + 1
포장 하여 오른쪽 경 계 를 두 번 찾 아 라.
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
#
def find_right(data,k):
left, right = 0, len(data) - 1
while left <= right:
mid = left + (right - left) // 2
if data[mid] < k:
left = mid + 1
elif data[mid] > k:
right = mid - 1
else:
left = mid + 1
return right
return find_right(data, k) - find_right(data, k - 1)
4. 복잡 도 분석: 방법 1: 시간 복잡 도 는 모두 O (N) 공간 복잡 도 는 모두 O (1) 방법 2: 시간 복잡 도: O (logN) 공간 복잡 도: O (1)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
소 객 - 검 지 offer 시리즈 문제 풀이 & LeedCode 바이트 댄스 기업 면접 문제 라 이브 러 리 중 하나: 반전 링크1. 문제 설명: 링크 를 입력 하고 링크 를 반전 시 킨 후에 새로운 링크 의 헤더 를 출력 합 니 다. 3. 문제 풀이: 방법 1: 쌍 지 침 법 반전 은 두 걸음 이 필요 합 니 다. 첫 번 째 단 계 는 그의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.