<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>top k Archives - Huahua&#039;s Tech Road</title>
	<atom:link href="https://zxi.mytechroad.com/blog/tag/top-k/feed/" rel="self" type="application/rss+xml" />
	<link>https://zxi.mytechroad.com/blog/tag/top-k/</link>
	<description></description>
	<lastBuildDate>Fri, 13 Jul 2018 03:40:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.8</generator>

<image>
	<url>https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/cropped-photo-32x32.jpg</url>
	<title>top k Archives - Huahua&#039;s Tech Road</title>
	<link>https://zxi.mytechroad.com/blog/tag/top-k/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>花花酱 LeetCode 703. Kth Largest Element in a Stream</title>
		<link>https://zxi.mytechroad.com/blog/heap/leetcode-703-kth-largest-element-in-a-stream/</link>
					<comments>https://zxi.mytechroad.com/blog/heap/leetcode-703-kth-largest-element-in-a-stream/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Fri, 13 Jul 2018 03:33:59 +0000</pubDate>
				<category><![CDATA[Heap]]></category>
		<category><![CDATA[BST]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[heap]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[top k]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=3095</guid>

					<description><![CDATA[<p>Problem Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/heap/leetcode-703-kth-largest-element-in-a-stream/">花花酱 LeetCode 703. Kth Largest Element in a Stream</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><strong>Problem</strong></h1>
<p>Design a class to find the <strong>k</strong>th largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element.</p>
<p>Your <code>KthLargest</code> class will have a constructor which accepts an integer <code>k</code> and an integer array <code>nums</code>, which contains initial elements from the stream. For each call to the method <code>KthLargest.add</code>, return the element representing the kth largest element in the stream.</p>
<p><strong>Example:</strong></p>
<pre class="crayon:false">int k = 3;
int[] arr = [4,5,8,2];
KthLargest kthLargest = new KthLargest(3, arr);
kthLargest.add(3);   // returns 4
kthLargest.add(5);   // returns 5
kthLargest.add(10);  // returns 5
kthLargest.add(9);   // returns 8
kthLargest.add(4);   // returns 8
</pre>
<p><strong>Note: </strong><br />
You may assume that <code>nums</code>&#8216; length ≥ <code>k-1</code> and <code>k</code> ≥ 1.</p>
<h1><strong>Solution: BST / Min Heap</strong></h1>
<p>Time complexity: O(nlogk)</p>
<p>Space complexity: O(k)</p>
<p>C++ / BST</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 32 ms
class KthLargest {
public:
  KthLargest(int k, vector&lt;int&gt; nums): k_(k) {
    for (int num : nums)
      add(num);
  }

  int add(int val) {    
    s_.insert(val);
    if (s_.size() &gt; k_)
      s_.erase(s_.begin());
    return *s_.begin();
  }
private:
  const int k_;  
  multiset&lt;int&gt; s_;
};</pre><p>C++ / Min Heap</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 28 ms
class KthLargest {
public:
  KthLargest(int k, vector&lt;int&gt; nums): k_(k) {    
    for (int num : nums)
      add(num);
  }

  int add(int val) {    
    s_.push(val);
    if (s_.size() &gt; k_)
      s_.pop();
    return s_.top();
  }
private:
  const int k_;  
  priority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; s_; // min heap
};</pre><p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/heap/leetcode-703-kth-largest-element-in-a-stream/">花花酱 LeetCode 703. Kth Largest Element in a Stream</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://zxi.mytechroad.com/blog/heap/leetcode-703-kth-largest-element-in-a-stream/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
