Home > Net >  Remove Even numbers from stack up to int k
Remove Even numbers from stack up to int k

Time:02-10

I'm trying to write a recursive function that removes the first k even numbers from the stack. If there are less than k even elements in the stack, just remove all even elements by not using any loops or data structures other than the stack passed in as a parameter. I have this but I can't figure out how to incorporate k correctly

public static int removeEvenNumbers(Stack<Integer> stack, int k) {
    if (k <= 0 || stack.empty()) {
        return 0;
    }
    if (stack.peek() % 2 == 0) {
        stack.pop();
        return 1   removeEvenNumbers(stack, k - 1);
    } else {
        int removed = stack.pop();
        int returns = removeEvenNumbers(stack, k);
        stack.push(removed);
        return returns;
    }
}

CodePudding user response:

You aren't verifying K after removing a element, so if you just removed a element with K = 1, then you should stop.

public static int removeEvenNumbers(Stack<Integer> stack, int k) {
    if (k <= 0 || stack.empty()) {
        return 0;
    }
    if (stack.peek() % 2 == 0) {
        stack.pop();
        return k > 1 ? removeEvenNumbers(stack, k - 1) : 1;
    } else {
        int removed = stack.pop();
        int returns = removeEvenNumbers(stack, k);
        stack.push(removed);
        return returns;
    }
}
  •  Tags:  
  • Related