Tôi được hỏi trong một cuộc phỏng vấn câu hỏi sau đây: nếu bạn có một Stack of Integers, bạn sẽ tìm thấy giá trị tối đa của Stack mà không sử dụng Collections.max và không lặp qua Stack và so sánh các phần tử. Tôi đã trả lời bằng mã dưới đây vì tôi không biết cách nào khác ngoài việc sử dụng bất kỳ API Bộ sưu tập nào hoặc lặp qua Stack và sử dụng các so sánh. Bất kỳ ý tưởng?Làm thế nào để tìm giá trị số nguyên tối đa trong ngăn xếp mà không sử dụng tối đa() hoặc lặp qua nó?
import java.util.Collections;
import java.util.Stack;
public class StackDemo {
public static void main(String[] args){
Stack lifo = new Stack();
lifo.push(new Integer(4));
lifo.push(new Integer(1));
lifo.push(new Integer(150));
lifo.push(new Integer(40));
lifo.push(new Integer(0));
lifo.push(new Integer(60));
lifo.push(new Integer(47));
lifo.push(new Integer(104));
if(!lifo.isEmpty()){
Object max = Collections.max(lifo);
System.out.println("max=" + max.toString());
}
}
}
Có thể đệ quy? – StephenTG
@StephenTG Không, không thể nhận được các phần tử tùy ý mà không cần bật ngăn xếp. – hexafraction
Bạn có thể sử dụng đệ quy mà bắt chước lặp lại mặc dù. Hacky, nhưng về mặt kỹ thuật sẽ tránh hạn chế lặp lại – StephenTG