Skip to content

Commit 1942f22

Browse files
author
zhangruihao.zhang
committed
第一周
1 parent 535fb1c commit 1942f22

2 files changed

Lines changed: 133 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* @author zhangruihao.zhang
3+
* @version v1.0.0
4+
* @since 2019/05/03
5+
*/
6+
public class LeetCode_687_108 {
7+
/**
8+
* Definition for a binary tree node.
9+
* public class TreeNode {
10+
* int val;
11+
* TreeNode left;
12+
* TreeNode right;
13+
* TreeNode(int x) { val = x; }
14+
* }
15+
*/
16+
class Solution {
17+
int maxLen = 0;
18+
public int longestUnivaluePath(TreeNode root) {
19+
if(root == null){
20+
return 0;
21+
}
22+
longest(root);
23+
return maxLen;
24+
}
25+
26+
private int longest(TreeNode root){
27+
if(root == null){
28+
return 0;
29+
}
30+
int leftLen=longest( root.left);
31+
int rightLen=longest( root.right);
32+
int leftUnivalueLen = 0;
33+
int rightUnivalue = 0;
34+
if(root.left != null && root.left.val == root.val){
35+
leftUnivalueLen = leftLen + 1;
36+
}
37+
38+
if(root.right != null && root.right.val == root.val){
39+
rightUnivalue = rightLen + 1;
40+
}
41+
42+
maxLen = max(maxLen , leftUnivalueLen + rightUnivalue );
43+
return max(leftUnivalueLen,rightUnivalue);
44+
}
45+
46+
private int max(int x,int y){
47+
return x>y ? x : y;
48+
}
49+
}
50+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import org.junit.Test;
2+
3+
import java.util.HashMap;
4+
import java.util.PriorityQueue;
5+
6+
/**
7+
* @author zhangruihao.zhang
8+
* @version v1.0.0
9+
* @since 2019/05/03
10+
*/
11+
public class LeetCode_895_108 {
12+
13+
class FreqStack {
14+
15+
private PriorityQueue<Pair> queue = null;
16+
private HashMap<Integer, Integer> itemCountMap = null;
17+
private int count;
18+
19+
public FreqStack() {
20+
itemCountMap = new HashMap<>();
21+
queue = new PriorityQueue<>((o1, o2) ->
22+
o1.getCount().compareTo(o2.getCount()) == 0 ?
23+
-o1.getOrder().compareTo(o2.getOrder()) : -o1.getCount().compareTo(o2.getCount()));
24+
}
25+
26+
public void push(int x) {
27+
count ++;
28+
itemCountMap.put(x, itemCountMap.getOrDefault(x, 0) + 1);
29+
queue.offer(new Pair(x, count, itemCountMap.getOrDefault(x, 0) + 1));
30+
}
31+
32+
public int pop() {
33+
Pair peek = queue.poll();
34+
int item = peek == null ? -1 : peek.item;
35+
Integer integer = itemCountMap.get(item);
36+
if(integer == 1){
37+
itemCountMap.remove(item);
38+
}else {
39+
itemCountMap.put(item, itemCountMap.get(item) - 1);
40+
}
41+
return item;
42+
}
43+
44+
private class Pair {
45+
private int item;
46+
//添加入队的顺序
47+
private Integer order;
48+
//共有几个相同的元素
49+
private Integer count;
50+
51+
public Pair(int item, Integer order, Integer count) {
52+
this.item = item;
53+
this.order = order;
54+
this.count = count;
55+
}
56+
57+
public int getItem() {
58+
return item;
59+
}
60+
61+
public void setItem(int item) {
62+
this.item = item;
63+
}
64+
65+
public Integer getOrder() {
66+
return order;
67+
}
68+
69+
public void setOrder(Integer order) {
70+
this.order = order;
71+
}
72+
73+
public Integer getCount() {
74+
return count;
75+
}
76+
77+
public void setCount(Integer count) {
78+
this.count = count;
79+
}
80+
}
81+
}
82+
83+
}

0 commit comments

Comments
 (0)