my image

Dmitrii Volyx

Performance Engineer

Min Stack

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – Get the top element. getMin() – Retrieve the minimum element in the stack. Example: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2. class MinStack { private LinkedList<Node> stack = new LinkedList<>(); /* value, min -3, -3 0, -2 -2, -2 */ /** initialize your data structure here. */ public MinStack() { } public void push(int x) { Node node; if (stack.isEmpty()) { node = new Node(x, x); } else { int min = Math.min(x, stack.peekFirst().min); node = new Node(x, min); } stack.push(node); System.out.printf("val %d min %d\n", node.value, node.min); } public void pop() { Node pop = stack.pop(); System.out.printf("pop val %d min %d\n", pop.value, pop.min); } public int top() { return stack.peekFirst().value; } public int getMin() { Node first = stack.peekFirst(); System.out.printf("getMin val %d min %d\n", first.value, first.min); return first.min; } class Node { Node(int value, int min) { this.value= value; this.min = min; } int value; int min; } } /** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */

April 14, 2020 · 2 min · volyx

Backspace String Compare

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character. Example 1: Input: S = "ab#c", T = "ad#c" Output: true Explanation: Both S and T become "ac". Example 2: Input: S = "ab##", T = "c#d#" Output: true Explanation: Both S and T become "". Example 3: Input: S = "a##c", T = "#a#c" Output: true Explanation: Both S and T become "c". Example 4: Input: S = "a#c", T = "b" Output: false Explanation: S becomes "c" while T becomes "b". Note: ...

April 13, 2020 · 2 min · volyx

Middle of the Linked List

Middle of the Linked List

April 12, 2020 · 1 min · volyx

Middle of the Linked List

Given a non-empty, singly linked list with head node head, return a middle node of linked list. If there are two middle nodes, return the second middle node. Example 1: Input: [1,2,3,4,5] Output: Node 3 from this list (Serialization: [3,4,5]) The returned node has value 3. (The judge's serialization of this node is [3,4,5]). Note that we returned a ListNode object ans, such that: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL. Example 2: Input: [1,2,3,4,5,6] Output: Node 4 from this list (Serialization: [4,5,6]) Since the list has two middle nodes with values 3 and 4, we return the second one. Note: ...

April 12, 2020 · 1 min · volyx

Archive

archives

0 min · Me