蓝桥杯刷题JAVA(9)

党课三日小鸽一手,今日继续~其实该准备CSP了的说。。

1.最小栈

class MinStack {
    int val;
    private LinkedList<MinStack> stackList = new LinkedList<MinStack>();
	private LinkedList<Integer> minList = new LinkedList<Integer>();
	private int flag = 0;
	
	public MinStack() {
        this.val = Integer.MIN_VALUE;
    }
    
    public void push(int val) {
    	MinStack tempMinStack = new MinStack();
    	tempMinStack.val = val;
    	stackList.add(tempMinStack);
        if(minList.size() == 0)
            minList.add(val);
        else
    	    minList.add(Math.min(val, minList.getLast()));
	}
    
    public void pop() {
    	stackList.removeLast();
    	minList.removeLast();
    }
    
    public int top() {
    	return stackList.getLast().val;
    }
    
    public int getMin() {
    	return minList.getLast();
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

经验:
通过链表的方式来保存栈里的所有元素,本质上就是用栈实现的最小栈,极度浪费空间时间。。比较好的方法是在类中定义一个内部类的链表来实现。

2.相交链表

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if (!headA || !headB) {
            return NULL;
        }
        ListNode *you = headA, *she = headB;
        while (you != she) { // 若是有缘,你们早晚会相遇
            you = you ? you->next : headB; // 当你走到终点时,开始走她走过的路
            she = she ? she->next : headA; // 当她走到终点时,开始走你走过的路
        }
        // 如果你们喜欢彼此,请携手一起走完剩下的旅程(将下面这个 while 块取消注释)。
        // 一路上,时而你踩着她的影子,时而她踩着你的影子。渐渐地,你变成了她,她也变
        // 成了你。
        /* while (she) {
            you = she->next;
            she = you->next;
        } */
        return you;
    }
};

经验:
此题解法巧妙,还能赋予爱情意义,目前最佳题没有之一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值