#美团#Java面试题:集合高频要点问题你能答上来吗?( 六 )

// 如果当前值 大于 n 直接返回了 一般不会出现这种问题 .....
if (i >= n) {
return;
// 子节点
int c1 = 2 * i + 1;
int c2 = 2 * i + 2;
// 假设最大的节点 为 i (父节点)
int max = i;
// 如果大于 赋值给 max
if (c1 < n && tree[c1
> tree[max
) {
max = c1;
// 如果大于 赋值给 max
if (c2 < n && tree[c2
> tree[max
) {
max = c2;
// 如果i所在的就是最大值我们没必要去做交换
if (max != i) {
// 交换最大值 和 父节点 的位置
swap(tree max i);
// 交换完以后此时的max其实就是 i原来的数 就是最小的数字 所以需要递归遍历
heapify(tree n max);
// 交换操作
static void swap(int[
tree int max int i) {
int temp = tree[max
;
tree[max
= tree[i
;
tree[i
= temp;
Stack
栈结构属于一种先进者后出 , 类似于一个瓶子 , 先进去的会压到栈低(push 操作) , 出去的时候只有一个出口就是栈顶 , 返回栈顶元素 , 这个操作称为 pop 。
Stack 类继承自 Vector , 所有方法都加入了 sync 修饰 , 使得效率很低 , 线程安全 。
@Test
public void testStack() {
Stack<Integer> stack = new Stack<>();
// push 添加
stack.push(1);
stack.push(2);
// pop 返回栈顶元素并移除
System.out.println(\"stack.pop() = \" + stack.pop());
System.out.println(\"stack.pop() = \" + stack.pop());
输出 :
21
作者:AnthonyDong
来源:掘金
为感谢您对我们的认可 , 特意准备了一些IT入门和进阶的干货
包括:Java、UI设计、H5前端、Python+人工智能、软件测试和新媒体运营六大学科视频资料 。 以及IT就业大礼包 。
线上视频、音频 , 随时学习观看
关注我们并私信“资料”即可获取 。


推荐阅读