彩色袜子题

链接

题目
在这里插入图片描述
在这里插入图片描述

思路:数学问题

求至少多少袜子能凑出一对,即每种颜色的袜子各一只时,再加1只 就能凑出一双!
如:2 2 1 ,则只需要3+1=4只就能凑出一双;

但如果每种颜色的袜子只有一只或者0只,再多颜色的袜子也凑不出一双!
如:1 1 1 0 1 ,怎么凑都不行,返回-1;

所以,至少要有一种袜子的颜色要大于1只
使用single变量记录大于1的袜子的数量,如果single=0,即所有颜色袜子都≤ 1,则无法凑出一双,返回-1;

注意: 输入数据有多组,使用外层for循环,遍历输入;

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int T=in.nextInt();
        for(int t=0;t<T;t++){ // 遍历不同测试数据
                // 数组长度
            int n=in.nextInt();
            int[] color=new int[n];
            int single=0;
            int num=0;
            for(int i=0;i<n;i++){
                int temp=in.nextInt();
                color[i]=temp;
                // 每种颜色取一个就是num
                // 若为单数则不算入num
                if(color[i]>1){
                    single++;
                    num++;
                }else if(color[i]==1){ // 
                    num++;
                }
            }
            if(single==0){ // 即每种颜色都是一只或0 只,则无法凑一双    
                System.out.println(-1);
            }else{
                System.out.println(num+1);
            }    
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值