third-maximum-number

 

https://leetcode.com/problems/third-maximum-number/

// 开始我以为相同的也占一位,比如5,3,3,2,得出3,但是答案是需要2

public class Solution {
    
    public int thirdMax(int[] nums) {
        List<Integer> lst = new ArrayList<>();
        boolean equal;
        int tmp;

        for (int i=0; i<nums.length; i++) {
            equal = false;
            int j=0;
            for (;j<3&&j<lst.size(); j++) {
                tmp = lst.get(j);
                if (tmp == nums[i]) {
                    equal = true;
                    break;
                }
                else if (tmp < nums[i]) {
                    break;
                }
            }
            if (!equal && j<3)
            lst.add(j, nums[i]);
        }

        if (lst.size() < 3) {
            if (lst.size() > 0) {
                return lst.get(0);
            }
            return 0;
        }

        return lst.get(2);

    }
    
    /*
    public int thirdMax(int[] nums) {
        List<Integer> lst = new ArrayList<>();
        for (int i=0; i<3 && i<nums.length; i++) {
            int j=0;
            for (;j<lst.size(); j++) {
                if (lst.get(j) <= nums[i]) {
                    break;
                }
            }
            lst.add(j, nums[i]);
        }

        if (lst.size() < 3) {
            if (lst.size() > 0) {
                return lst.get(0);
            }
            return 0;
        }

        for (int i=3; i<nums.length; i++) {
            int j = 0;
            for (; j<3; j++) {
                if (lst.get(j) < nums[i]) {
                    break;
                }
            }
            if (j<3) {
                lst.add(j, nums[i]);
            }
        }
        return lst.get(2);

    }
    */
}

 

posted @ 2016-10-16 20:11  blcblc  阅读(391)  评论(0编辑  收藏  举报