leetcode414. 第三大的數

給定一個非空數組,返回此數組中第三大的數。如果不存在,則返回數組中最大的數。要求算法時間復雜度必須是O(n)。

示例 1:

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.
示例 2:

輸入: [1, 2]

輸出: 2

解釋: 第三大的數不存在, 所以返回最大的數 2 .
示例 3:

輸入: [2, 2, 3, 1]

輸出: 1

解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。

思路1:見代碼,分情況即可。記得特殊處理第三小正好是Integer.MIN_VALUE的情況。

class Solution {public int thirdMax(int[] nums) {int first=Integer.MIN_VALUE;int second=Integer.MIN_VALUE;int third=Integer.MIN_VALUE;int sum=0;boolean bool=false;for(int i:nums){if(i==Integer.MIN_VALUE)bool=true;if(i==first || i==second || i==third)continue;if(i>first){third=second;second=first;first=i;sum++;}else if(i>second){third=second;second=i;sum++;}else if(i>third){third=i;sum++;}}if(sum>2){return third;}else if(sum==2 && bool){return third;}else{return first;}}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis:17---常用功能之(事務)

為了保證多條命令組合的原子性,Redis提供了簡單的事務功能以及集成Lua腳本來解決這個問題,本文介紹Redis事務,Lua在下一篇文章介紹一、事務概述簡單地說,事務表示一組動作,要么全部執行,要么全部不執行。例…

leetcode448. 找到所有數組中消失的數字 天秀記錄法

給定一個范圍在 1 ≤ a[i] ≤ n ( n 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。 找到所有在 [1, n] 范圍之間沒有出現在數組中的數字。 您能在不使用額外空間且時間復雜度為O(n)的情況下完成這個任務嗎? 你可以假定返回…

Redis:12---有序集合對象

一、有序集合對象概述它保留了集合不能有重復成員的特性, 但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下標作為排序依據不同的是,它給每個元素設置一個分數(score)作為排序的依據如下圖所示&#xff0…

Redis:14---常用功能之(Pipeline)

一、Pipeline概述 Redis客戶端執行一條命令分為如下四個過程:1.發送命令2.命令排隊3.命令執行4.返回結果其中1+4稱為Round Trip Time(RTT,往返時間)Pipeline概述 Redis提供了批量操作命令(例如mget、mset等),有效地節約RTT。但大部分命令是不支持批量操作的,例如要執行…

leetcode170. 兩數之和 III - 數據結構設計

設計并實現一個 TwoSum 的類,使該類需要支持 add 和 find 的操作。 add 操作 - 對內部數據結構增加一個數。 find 操作 - 尋找內部數據結構中是否存在一對整數,使得兩數之和與給定的數相等。 示例 1: add(1); add(3); add(5); find(4) -> true fi…

Redis:11---Set對象

集合類型 (Set) 是一個無序并唯一的鍵值集合。它的存儲順序不會按照插入的先后順序進行存儲。 集合類型和列表類型的區別如下: 列表可以存儲重復元素,集合只能存儲非重復元素;列表是按照元素的先后順序存儲元素的,而集合則是無序方式存儲元素的。一、集合對象概述 特點:集…

Oracle中計算兩個時間的時間差:

計算時間差是oracledata數據類型的一個常見問題。oracle支持日期計算,你可以創建諸如“日期1-日期2”這樣的表達式來計算這兩個日期之間的時間差。一旦你發現了時間差異,你可以使用簡單的技巧來以天、小時、分鐘或者秒為單位來計算時間差。為…

Redis:13--常用功能之redis-cli redis-server等命令

Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它們 雖然比較簡單,但是麻雀雖小五臟俱全,有時可以很巧妙地解決一些問題一、redis-cli在前面數據庫連接的時候已經redis-cli的-h、-p參數,除了這些參數,還有很多…

Redis:16---常用功能之(慢查詢日志)

一、慢查詢日志介紹 許多存儲系統(例如MySQL)提供慢查詢日志幫助開發和運維人員定位系統存在的慢操作。所謂慢查詢日志就是系統在命令執行前后計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關信息記錄下來,Redis也提供了類似的功能Redis的慢查詢日志功能用于記…

leetcode256. 粉刷房子

假如有一排房子,共 n 個,每個房子可以被粉刷成紅色、藍色或者綠色這三種顏色中的一種,你需要粉刷所有的房子并且使其相鄰的兩個房子顏色不能相同。 當然,因為市場上不同顏色油漆的價格不同,所以房子粉刷成不同顏色的花…

Redis:21---客戶端相關配置篇

一、客戶端相關配置①客戶端的限制maxclientsRedis提供了maxclients參數來限制最大客戶端連接數,一旦連接數超過 maxclients,新的連接將被拒絕maxclients默認值是10000可以通過info clients來查詢當前Redis的連接數:可以通過config set maxcl…

Redis:23---info命令總結

info命令的格式有3種:info:部分Redis系統狀態統計信息info all:全部Redis系統狀態統計信息,一次性打印下面所有p的內容info p:某一塊的系統狀態統計信息。info命令所有的p如下所示模塊名模塊含義 Server服務器信息Clie…

Redis:22---客戶端API:client、monitor)

一、client listclient list命令能列出與Redis服務端相連的所有客戶端連接信息。例如下面代碼是在一個Redis實例上執行client list的結果,其中每一行代表一個客戶端信息:下面將選擇幾個重要的屬性進行說明,其余通過表格的形式進行展示①標識&…

leetcode175. 組合兩個表(SQL)

表1: Person ---------------------- | 列名 | 類型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- PersonId 是上表主鍵 表2: Address ---------------------- | 列名 …

Redis:20---常用功能之(發布與訂閱)

一、發布與訂閱概述Redis提供了基于“發布/訂閱”模式的消息機制,此種模式下,消息發布者和訂閱者不進行直接通信,發布者客戶端向指定的頻道(channel)發布消息,訂閱該頻道的每個客戶端都可以收到該消息。 下…

Redis:19---常用功能之(HyperLogLog)

一、HyperLogLog概述HyperLogLog并不是一種新的數據結構(實際類型為字符串類型),而是一種基數算法,通過HyperLogLog可以利用極小的內存空間完成獨立總數的統計,數據集可以是IP、Email、ID等HyperLogLog提供了3個命令&a…

計算時間差的Oracle函數

Oracle函數可以實現諸多的功能,下面就介紹使用Oracle函數計算時間差的實現方法,如果您對Oracle函數方面感興趣的話,不妨一看。 兩個Date類型字段:START_DATE,END_DATE,計算這兩個日期的時間差(分…

leetcode181. 超過經理收入的員工(SQL)

Employee 表包含所有員工,他們的經理也屬于員工。每個員工都有一個 Id,此外還有一列對應員工的經理的 Id。 ------------------------------ | Id | Name | Salary | ManagerId | ------------------------------ | 1 | Joe | 70000 | 3 |…

UNIX(多線程):01---線程簡介及線程限制

一、線程的概念 典型的UNIX進程可以看成只有一個控制線程:一個進程在同一時刻只做一件事。有了多個控制線程后,在程序設計時可以把進程設計成在同一時刻能夠做不止一件事,每個線程處理各自獨立的任務二、線程的優點 通過為每種事件類型分配單獨的處理線程,可以簡化處理異步…

UNIX(多線程):13---condition_variable、wait、notify_one、notify_all

條件變量std::condition_variable、wait()、notify_one() 線程A: 等待一個條件滿足線程B: 專門往消息隊列中放入消息(數據),達到一定條件,通知處于等待中的線程A。std::condition_variable實際上是一個類,是一個和條件相關的一個類,說白了就是等待一個條件達成。這個類是…