count apples and oranges

14 阅读1分钟
/**
 * count apples and oranges whether land on the inclusive [s,t]
 * a is apple tree's cordination, b is orange tree's corditation
 * apples is apple tree's relative cordination ,left relative apple tree is represention by negative value
 * right relative is represention by positive value
 * oranges is same as apples
 * constrant condition :
 * 1<=s,t,a,b,m,n<=10to5 m is apples' size, n is oranges' size
 * -10to5<=d<=10to5 d is apples' cordation plus a's cordation and generate out donation distance and compute oranges' d as well
 * a<s<t<b
 * @param s
 * @param t
 * @param a
 * @param b
 * @param apples
 * @param oranges
 */
public static void countApplesAndOranges(int s, int t,int a,int b,List<Integer> apples,List<Integer> oranges){
    int val=1;
    for (int i = 0; i < 5; i++) {
        val*=10;
    }
    if (s<1 || s>val){
        return;
    }
    if (a<1 || a>val){
        return;
    }
    if (b<1 || a>val){
        return;
    }
    if (apples.size()<1 || apples.size()>val){
        return;
    }
    if (oranges.size()<1 || apples.size()>val){
        return;
    }
    ArrayList<Integer> appleDonationList = new ArrayList<>();
    apples.forEach(e->{
        int i = a + e;
        appleDonationList.add(i);
    });
    ArrayList<Integer> orangeDonationList = new ArrayList<>();
    oranges.forEach(e->{
        int i = b + e;
        orangeDonationList.add(i);
    });
    int negativeVal = -val;
    ArrayList<Integer> donationList = new ArrayList<>();
    donationList.addAll(appleDonationList);
    donationList.addAll(orangeDonationList);
    for (Integer i : donationList) {
        if (i<negativeVal || i>val){
            return;
        }
    }
    if (a>=s){
        return;
    }
    if (a>=t){
        return;
    }
    if (a>=b){
        return;
    }
    if (s<=a){
        return;
    }
    if (s>=t){
        return;
    }
    if (s>=b){
        return;
    }
    if (t<=a){
        return;
    }
    if (t<=s){
        return;
    }
    if (t>=b){
        return;
    }
    if (b<=a){
        return;
    }
    if (b<=s){
        return;
    }
    if (b<=t){
        return;
    }
    int appleCount=0;
    for (Integer i : appleDonationList) {
        if (i>=s && i<=t){
            appleCount++;
        }
    }
    System.out.println(appleCount);
    int orangeCount=0;
    for (Integer i : orangeDonationList) {
        if (i>=s && i<=t){
            orangeCount++;
        }
    }
    System.out.println(orangeCount);
    return;
}