leetcode解题之414 # Third Maximum Number Java版

来源:互联网 发布:js聊天代码大全 编辑:程序博客网 时间:2024/06/05 13:36

Given a non-empty array of integers, return thethird maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

Example 1:

Input: [3, 2, 1]Output: 1Explanation: The third maximum is 1.

Example 2:

Input: [1, 2]Output: 2Explanation: The third maximum does not exist, so the maximum (2) is returned instead.

Example 3:

Input: [2, 2, 3, 1]Output: 1Explanation: Note that the third maximum here means the third maximum distinct number.Both numbers with value 2 are both considered as second maximum.

public int thirdMax(int[] nums) {int one, two, three, count = 0;one = two = three = Integer.MIN_VALUE;for (int x : nums) {//若相同继续循环,要有count判断,因为nums中可能有Integer.MIN_VALUEif (x == one && count >= 1 || x == two && count >= 2 || x == three&& count >= 3)continue;if (x > one) {three = two;two = one;one = x;count++;} else if (x > two) {three = two;two = x;count++;//此处一定是有等于的,若没有有可能露掉//int nums[] = { 1, 2, Integer.MIN_VALUE };缺少一次判断} else if (x >= three) {three = x;count++;}}//count 代表更新的次数,若大于等于3,表示有第三大的数if (count >= 3)return three;elsereturn one;}


0 0
原创粉丝点击