猫狗收容所

题目:

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

思路:

用代码模拟挑选过程,思路都在代码里

  • 先对ops的第一个元素进行判断,是1则入收容所,是2则分为3种情况领养动物(领养最早的猫或狗可合并为一种情况)
  • 注意过程中对list自带方法的应用
  • 注意细节,在最后一个循环中,由于不确定第一只猫或狗在list中出现的位置,所以需要remove(j)而不是remove(0);
    在这里插入图片描述

代码:

import java.util.*;
import java.util.ArrayList;
import java.util.LinkedList;

public class CatDogAsylum {
    //猫狗收容所
    public ArrayList<Integer> asylum(int[][] ope) {
    // list用来存储入收容所的猫狗,res用来存储出收容所的动物
    List<int[]> list = new LinkedList<>();
    ArrayList<Integer> res = new ArrayList<>();

    for (int [] i :ope){
        //如果i[0]=1,代表动物进收容所
        if (i[0] == 1){
         list.add(i);
        }
        else if (i[0] == 2) {
            //说明动物要出收容所,有3种情况
            if (i[1] == 0) {
                //采取第一种方式收养,收养最先入收容所的动物不论猫狗
                //前提收容所中有动物
                if (!list.isEmpty()) {
                    int[] animal = list.remove(0);
                    //animal数组中存的就是第一只动物的信息[入还是出,猫还是狗],
                    // 此时下标为1的元素就是动物的身份
                    res.add(animal[1]);
                }
            } else {
                //采取第2,3种收养方式(-1代表收养猫,1代表收养狗)
                for (int j = 0; j < list.size(); j++) {
                    //如果收养猫并且收养所中有猫||收养狗并且收容所里面有狗,
                    // 就将对应的动物出收容所,并添加到res中去
                    if (i[1] == -1 && list.get(j)[1] < 0 || i[1] == 1 && list.get(j)[1] >0){
                   //list.get(j)得到的是对应j下标的list一维数组,
                   // list.get(j)[1],得到的是该一维数组的下标为1的元素
                       int [] animal = list.remove(j);
                       res.add(animal[1]);
                     //已经找到出收容所的动物了,后面的就不需要再判断了
                        break;
                    }
                }
            }
        }
    }
    return res;
    }
    
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值