leetcode19 414 第三大的數

2021-10-02 10:06:29 字數 1314 閱讀 2854

難度:簡單

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。

示例 1:

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.

示例 2:

輸入: [1, 2]

輸出: 2

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

示例 3:

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

輸出: 1

解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。

存在兩個值為2的數,它們都排第二。

1.用到排序,並不符合時間複雜度o(n)的條件

2.用三個變數儲存前三大的元素,若有則返回最小的,否則返回最大的(思路易想,但存在問題);這種思路有個問題在於第三大元素可能是最小值,這樣無法判斷第三大值是否存在,因此變數初值不好給定,可以用標識變數是否有修改(**不太優美)

3.用treeset實現(treeset有序且沒有重複元素)

//方法一

class

solution

for(int i = nums.length-

1; i >

0; i--)if

(temp ==3)

return nums[i-1]

;}return nums[nums.length-1]

;}}//方法二

class

solution

else

if(nums[i]

==max1)

continue

;else

if(nums[i]

> max2 || nums[i]

==max2 && flag2==0)

else

if(nums[i]

==max2)

continue

;else

if(nums[i]

> max3 || nums[i]

==max3 && flag3==0)

}if(flag3 >0)

return max3;

else

return max1;}}

//方法三

class

solution

return

set.

size()

<3?

set.

last()

:set

.first()

;}}

leetcode第三題筆記

無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。string s pwwkew int size,i 0,j,k,max 0 size s.size for j 0 jif j i 1 max max j i 1 思路其實跟滑動視窗一樣,外層的for迴圈作為視窗右...

leetcode演算法第三題

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 s bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 s pwwkew...

Leetcode第三題 回文數

題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。直接用字串切片 class solution object defispalindrome self,x type x int rtype bool if x 0 return false else x s...