程序运行正确,就想问下solve方法的最后一行三目运算符的意思,解释一下这一行?


public class a {
    public static int coinChange(int[] smallChanges, int amount) {//找出应该用于兑换的面值
        int[] count=new int[amount+1];

        for(int i:smallChanges){//小额的值丢给i
            if(i<=amount){
                count[i]=1;//面值比总额还大的舍去,可以用的,在count中加1
            }
        }

        return solve(smallChanges,amount,count);
    }
    public static int solve(int[]smallChanges,int amount,int[] count){
        if(amount<0){
            return -1;
        }
        if(amount==0){
            return 0;
        }
        if(count[amount]!=0){
            return count[amount];//刚好有个面值最大的与之对应
        }
        int min=Integer.MAX_VALUE;

        int temp;

        for(int i:smallChanges){
            temp=solve(smallChanges,amount-i,count);
            if(temp!=-1&&min>temp){
                min=temp;
            }
        }
        return count[amount]= min!=Integer.MAX_VALUE ?min+1:1;

    }
    public static void main(String[] args){
        int[] smallChanges={16,13,5};
        int amount=34;
        System.out.println(coinChange(smallChanges,amount));
    }
}

程序运行正确,就想问下solve方法的最后一行三目运算符的意思,解释一下这一行?
return count[amount]= min!=Integer.MAX_VALUE ?min+1:1;这一行

count[amount] 和 Integer.MAX_VALUE 是否不一样,不一样返回count[amount] +1, 否在返回 1

return count[amount]= min!=Integer.MAX_VALUE ?min+1:1;

//先是计算min!=Integer.MAX_VALUE ?min+1:1的结果,然后是将结果赋值给count[amount],最后是返回count[amount]的值
//min!=Integer.MAX_VALUE ?min+1:1 是判断min和Integer.MAX_VALUE是否相等,不相等返回min+1,相等返回1
//这个三目运算符的判断规则是 运算?前面的结果,如果是true,取:之前的值,false,取:后面的值