从堆栈中删除偶数直到 int k
Remove Even numbers from stack up to int k
我正在尝试编写一个递归函数,从堆栈中删除前 k 个偶数。如果栈中的偶数元素少于k个,则只移除所有偶数元素,除了作为参数传入的栈之外,不使用任何循环或数据结构。我有这个,但我不知道如何正确合并 k
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;
}
}
您在删除元素后并未验证 K,因此如果您只是使用 K = 1
删除了元素,那么您应该停止。
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;
}
}
我正在尝试编写一个递归函数,从堆栈中删除前 k 个偶数。如果栈中的偶数元素少于k个,则只移除所有偶数元素,除了作为参数传入的栈之外,不使用任何循环或数据结构。我有这个,但我不知道如何正确合并 k
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;
}
}
您在删除元素后并未验证 K,因此如果您只是使用 K = 1
删除了元素,那么您应该停止。
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;
}
}