dengxinyi 6 lat temu
rodzic
commit
0934ff990b

+ 1 - 1
easy/496.next-greater-element-i.go

@@ -1,5 +1,5 @@
 func nextGreaterElement(findNums []int, nums []int) []int {
-	stack := make([]int, 0)
+	stack := make([]int, 0) // Keep a decease stack
 	next := make(map[int]int)
 	for _, i := range nums {
 		for l := len(stack); l != 0 && stack[l-1] < i; l = len(stack) {

+ 35 - 0
medium/508.most-frequent-subtree-sum.go

@@ -0,0 +1,35 @@
+var max int = 0
+
+/**
+ * Definition for a binary tree node.
+ * type TreeNode struct {
+ *     Val int
+ *     Left *TreeNode
+ *     Right *TreeNode
+ * }
+ */
+func findFrequentTreeSum(root *TreeNode) (res []int) {
+	max = 0
+	freq := make(map[int]int)
+	postorder(root, &freq)
+	for k, v := range freq {
+		if v == max {
+			res = append(res, k)
+		}
+	}
+	return
+}
+
+func postorder(root *TreeNode, freq *map[int]int) int {
+	if root == nil {
+		return 0
+	}
+	l := postorder(root.Left, freq)
+	r := postorder(root.Right, freq)
+	sum := l + r + root.Val
+	(*freq)[sum]++
+	if max < (*freq)[sum] {
+		max = (*freq)[sum]
+	}
+	return sum
+}