Skip to content

Commit cede7b1

Browse files
committed
update
1 parent c77f9d3 commit cede7b1

File tree

6 files changed

+233
-9
lines changed

6 files changed

+233
-9
lines changed

src/main/java/com/leetcode/stack/StackTwo.java renamed to src/main/java/com/leetcode/heap/HeapOne.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package com.leetcode.stack;
1+
package com.leetcode.heap;
22

33

44
import java.util.Stack;
55

66
/**
77
* Kth Largest Element in an Array
88
*/
9-
public class StackTwo {
9+
public class HeapOne {
1010

1111
public static int partition(int[] nums, int low, int high) {
1212
int pivot = nums[high];
@@ -49,7 +49,7 @@ public static void main(String[] args) {
4949

5050
int[] nums = new int[]{9,8,7,6,5,4,3,2,1};
5151
int k = 2;
52-
int kthLargest = new StackTwo().findKthLargest(nums, k);
52+
int kthLargest = new HeapOne().findKthLargest(nums, k);
5353
System.out.println(kthLargest);
5454
}
5555
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.leetcode.stack;
2+
3+
4+
import java.util.Stack;
5+
6+
/**
7+
*
8+
* double stack
9+
*/
10+
public class MinStack {
11+
private Stack<Integer> minStack;
12+
private Stack<Integer> mainStack;
13+
14+
public MinStack() {
15+
minStack = new Stack<Integer>();
16+
mainStack = new Stack<Integer>();
17+
}
18+
19+
public void push(int val) {
20+
mainStack.push(val);
21+
if(minStack.isEmpty()){
22+
minStack.push(val);
23+
}else{
24+
Integer currentMin = minStack.peek();
25+
if(currentMin > val){
26+
minStack.push(val);
27+
}else{
28+
minStack.push(currentMin);
29+
}
30+
}
31+
32+
}
33+
34+
public void pop() {
35+
mainStack.pop();
36+
minStack.pop();
37+
}
38+
39+
public int top() {
40+
return mainStack.peek();
41+
}
42+
43+
public int getMin() {
44+
return minStack.peek();
45+
}
46+
47+
public static void main(String[] args) {
48+
MinStack minStack = new MinStack();
49+
50+
minStack.push(3);
51+
minStack.push(2);
52+
minStack.push(1);
53+
minStack.push(2);
54+
minStack.push(3);
55+
minStack.push(1);
56+
57+
minStack.pop();
58+
System.out.println(minStack.getMin());
59+
minStack.pop();
60+
System.out.println(minStack.getMin());
61+
minStack.pop();
62+
System.out.println(minStack.getMin());
63+
minStack.pop();
64+
System.out.println(minStack.getMin());
65+
minStack.pop();
66+
System.out.println(minStack.getMin());
67+
minStack.pop();
68+
System.out.println(minStack.getMin());
69+
70+
}
71+
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.leetcode.stack;
2+
3+
4+
/**
5+
* linkedlist
6+
*/
7+
class MinStackS {
8+
private Node head;
9+
10+
public void push(int x) {
11+
if(head == null)
12+
head = new Node(x, x);
13+
else
14+
head = new Node(x, Math.min(x, head.min), head);
15+
}
16+
17+
public void pop() {
18+
head = head.next;
19+
}
20+
21+
public int top() {
22+
return head.val;
23+
}
24+
25+
public int getMin() {
26+
return head.min;
27+
}
28+
29+
private class Node {
30+
int val;
31+
int min;
32+
Node next;
33+
34+
private Node(int val, int min) {
35+
this(val, min, null);
36+
}
37+
38+
private Node(int val, int min, Node next) {
39+
this.val = val;
40+
this.min = min;
41+
this.next = next;
42+
}
43+
}
44+
45+
46+
public static void main(String[] args) {
47+
MinStackS minStack = new MinStackS();
48+
minStack.push(3);
49+
minStack.push(2);
50+
minStack.push(1);
51+
minStack.push(2);
52+
minStack.push(3);
53+
minStack.push(1);
54+
55+
minStack.pop();
56+
System.out.println(minStack.getMin());
57+
minStack.pop();
58+
System.out.println(minStack.getMin());
59+
minStack.pop();
60+
System.out.println(minStack.getMin());
61+
minStack.pop();
62+
System.out.println(minStack.getMin());
63+
minStack.pop();
64+
System.out.println(minStack.getMin());
65+
minStack.pop();
66+
System.out.println(minStack.getMin());
67+
}
68+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.leetcode.stack;
2+
import java.util.Stack;
3+
4+
/**
5+
*
6+
* double push
7+
*/
8+
class MinStackSS {
9+
Stack<Integer> stack = new Stack<Integer>();
10+
11+
public void push ( int x){
12+
if (stack.isEmpty()) {
13+
stack.push(x);
14+
stack.push(x);
15+
} else {
16+
int tmp = stack.peek();
17+
stack.push(x);
18+
if (tmp < x) {
19+
stack.push(tmp);
20+
} else {
21+
stack.push(x);
22+
}
23+
}
24+
}
25+
26+
public void pop () {
27+
stack.pop();
28+
stack.pop();
29+
}
30+
31+
public int top () {
32+
return stack.get(stack.size() - 2);
33+
}
34+
35+
public int getMin () {
36+
return stack.peek();
37+
}
38+
39+
40+
public static void main(String[] args) {
41+
MinStackSS minStack = new MinStackSS();
42+
minStack.push(3);
43+
minStack.push(2);
44+
minStack.push(1);
45+
minStack.push(2);
46+
minStack.push(3);
47+
minStack.push(1);
48+
49+
minStack.pop();
50+
System.out.println(minStack.getMin());
51+
minStack.pop();
52+
System.out.println(minStack.getMin());
53+
minStack.pop();
54+
System.out.println(minStack.getMin());
55+
minStack.pop();
56+
System.out.println(minStack.getMin());
57+
minStack.pop();
58+
System.out.println(minStack.getMin());
59+
minStack.pop();
60+
System.out.println(minStack.getMin());
61+
}
62+
63+
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
11
package com.leetcode.stack;
22

3+
import java.util.Stack;
4+
35
/**
46
*
57
* Is Valid Perentheses
68
*
9+
* using stack data structure
710
*/
811
public class StackOne {
912

1013

11-
14+
public boolean isValid(String s) {
15+
Stack<Character> stack = new Stack<Character>();
16+
for(char c : s.toCharArray()){
17+
if(c == '{' | c == '[' | c == '('){
18+
stack.push(c);
19+
}
20+
if(c == '}' | c == ']' | c == ')'){
21+
if(stack.isEmpty()){
22+
return false;
23+
}
24+
Character c2 = stack.pop();
25+
if( !(c2 == '{' & c == '}') && !(c2 == '[' & c == ']') && !(c2 == '(' & c == ')') ){
26+
return false;
27+
}
28+
}
29+
}
30+
return true;
31+
}
1232
public static void main(String[] args) {
13-
33+
String s = "{(abc+bcd)*[cc+dd]}";
34+
boolean isvalid = new StackOne().isValid(s);
35+
System.out.println(isvalid);
1436
}
1537
}

src/test/java/com/leetcode/stack/StackTwoTest.java renamed to src/test/java/com/leetcode/stack/HeapOneTest.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
package com.leetcode.stack;
22

3+
import com.leetcode.heap.HeapOne;
34
import org.junit.jupiter.api.Assertions;
45
import org.junit.jupiter.api.Test;
56

6-
import static org.junit.jupiter.api.Assertions.*;
7-
8-
class StackTwoTest {
7+
class HeapOneTest {
98

109
@Test
1110
public void partitionTest(){
1211
int[] nums = new int[]{1,2,3,4,5,6,7,8,9};
13-
int pivotIndex = StackTwo.partition(nums, 0, nums.length - 1);
12+
int pivotIndex = HeapOne.partition(nums, 0, nums.length - 1);
1413
Assertions.assertEquals(pivotIndex , 8);
1514
}
1615

0 commit comments

Comments
 (0)