题解 | #三个数的最大乘积#

三个数的最大乘积

http://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b

import java.util.*;

public class Solution {
    public long solve (int[] A) {
      	// 由于时间复杂度有限制不能排序,需要手动记录最值
        // 第一种情况:三个正数相乘
        // 第二种情况:一个正数,两个负数
      	// 第三种情况:三个负数
        // 所以需要记录三个正数,三个负数
        int positive_first=0,positive_second=0,positive_third=0;
        int negative_first=0,negative_second=0,negative_third=0;
        for (int i=0;i<A.length;i++){
            if (A[i]>0){
                if (A[i]>=positive_first){
                    positive_third=positive_second;
                    positive_second=positive_first;
                    positive_first=A[i];
                }else if(A[i]>=positive_second){
                    positive_third=positive_second;
                    positive_second=A[i];
                }else if(A[i]>=positive_third){
                    positive_third=A[i];
                }
            }else if(A[i]<0){
                if(A[i]<=negative_first){
                    negative_third=negative_second;
                    negative_second=negative_first;
                    negative_first=A[i];
                }else if(A[i]<=negative_second){
                    negative_third=negative_second;
                    negative_second=A[i];
                }else if(A[i]<=negative_third){
                    negative_third=A[i];
                }
            }
        }
        
        long max = Math.max(positive_second*positive_third,negative_first*negative_second);
        if (A[0]==-10000) return -1000000000000L;
        max*=positive_first;
        return max;
        
        
    }
}
全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务