php 데이터 흐름 에서 K 대 원소 의 계산 방법 및 코드 분석
계산 방법
1.가장 작은 무 더 기 를 직접 사용 하고 쌓 인 크기 는 k 이다.이렇게 하면 공간 이 가장 적 게 차지 하고 가장 작은 뿌리 노드 는 가장 작은 값 이자 우리 가 원 하 는 결과 이다.
2.phop 의 spl 표준 라 이브 러 리 는 이 라 이브 러 리 를 최소 화하 고 코드 에서 SplMinHeap 를 직접 계승 합 니 다.
실례
class KthLargest extends SplMinHeap {
/**
* @param Integer $k
* @param Integer[] $nums
*/
static $nums;
public $k;
function __construct($k, $nums) {
$this->k = $k;
// ,
foreach ($nums as $v) {
$this->add($v);
}
}
* @param Integer $val
* @return Integer
function add($val) {
// k, , 。
if ($this->count() < $this->k) {
$this->insert($val);
} elseif ($this->top() < $val) {
// , 。 。 。
$this->extract();
return $this->top();
}}
* Your KthLargest object will be instantiated and called as such:
* $obj = KthLargest($k, $nums);
* $ret_1 = $obj->add($val);
인 스 턴 스 확장:
class KthLargest {
/**
* @param Integer $k
* @param Integer[] $nums
*/
static $nums;
public $k;
function __construct($k, $nums) {
$this->k = $k;
$this->nums = $nums;
}
/**
* @param Integer $val
* @return Integer
*/
function add($val) {
array_push($this->nums, $val);
rsort($this->nums);
return $this->nums[$this->k - 1];
}
}
첫 번 째 사고,시간 이 제한 을 초과 한 이 유 는 매번$this->nums 라 는 배열 에 대해 재 정렬 을 해 야 하기 때 문 입 니 다.지난번 에 이미 정렬 한 것 은 다시 한 번 배열 해 야 하기 때문에 시간 을 낭비 합 니 다.그래서 다음 해법 은 매번 저장 하고 마지막 으로 정렬 한 앞의 k 개 요소 만 저장 하 는 것 입 니 다.이번 의 정렬 횟수 는 줄 어 들 었 다.시간 도 줄 었 고
class KthLargest {
/**
* @param Integer $k
* @param Integer[] $nums
*/
static $nums;
public $k;
function __construct($k, $nums) {
$this->k = $k;
$this->nums = $nums;
}
/**
* @param Integer $val
* @return Integer
*/
function add($val) {
array_push($this->nums, $val);
rsort($this->nums);
$this->nums = array_slice($this->nums, 0, $this->k);
return $this->nums[$this->k - 1];
}
}
phop 데이터 흐름 에서 K 대 요소 의 계산 방법 및 코드 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.phop 데이터 흐름 에서 K 대 요소 의 계산 방법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.