您好,登錄后才能下訂單哦!
這篇“如何使用java查看數組中的第K個最大元素”文章,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要參考一下,對于“如何使用java查看數組中的第K個最大元素”,小編整理了以下知識點,請大家跟著小編的步伐一步一步的慢慢理解,接下來就讓我們進入主題吧。
在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。
示例 1:
輸入: k = 2 輸出: 5
示例 2:
輸入: k = 4 輸出: 4
說明:
你可以假設 k 總是有效的,且 1 ≤ k ≤ 數組的長度。
答案:
1public int findKthLargest(int[] nums, int k) {
2 final int N = nums.length;
3 Arrays.sort(nums);
4 return nums[N - k];
5}
解析:
這種解法是最簡單的,直接排序,然后再找第k個即可。但很明顯這種解法在面試中不占優勢,雖然做出來了,但感覺做和沒做都一個樣。下面再來看種解法
1public int findKthLargest(int[] nums, int k) {
2 final PriorityQueue<Integer> pq = new PriorityQueue<>();
3 for (int val : nums) {
4 pq.offer(val);
5 if (pq.size() > k) {
6 pq.poll();
7 }
8 }
9 return pq.peek();
10}
PriorityQueue是一種排序隊列,offer表示往里面添加元素,添加的時候會進行排序,PriorityQueue默認是小頂堆的一種數據結構,最頂端的數據是最小的,poll表示的是移除最頂端的元素,也就是移除最小的元素。peek表示的是取出最頂端的元素,代碼很好理解。這里我們使用的java的api,如果不讓我們使用PriorityQueue類,我們該怎么辦呢,其實也很簡單,大家可以參照我之前寫的106,排序-堆排序,自己建立一個大小為k的小頂堆即可。每次循環的時候如果堆的size小于k,直接add進去即可,如果等于k則要和堆最頂端的元素對比,如果比堆頂端的元素大,就把堆頂端的元素移除,然后把要比較的值放到堆的最頂端,讓后再往下調整。代碼就不再寫了,有興趣的可以自己去寫寫。
1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。
以上是“如何使用java查看數組中的第K個最大元素”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。