您当前的位置: 首页 >  Java

孑渡

暂无认证

  • 0浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

蓝桥杯刷题JAVA(9)

孑渡 发布时间:2021-04-05 18:24:43 ,浏览量:0

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

1.最小栈

class MinStack {
    int val;
    private LinkedList stackList = new LinkedList();
	private LinkedList minList = new LinkedList();
	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;
    }
};

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

关注
打赏
1663211900
查看更多评论
立即登录/注册

微信扫码登录

0.0434s