dengxinyi 6 jaren geleden
bovenliggende
commit
7f51b5c5de

+ 42 - 0
medium/655.print-binary-tree.go

@@ -0,0 +1,42 @@
+/**
+ * Definition for a binary tree node.
+ * type TreeNode struct {
+ *     Val int
+ *     Left *TreeNode
+ *     Right *TreeNode
+ * }
+ */
+func printTree(root *TreeNode) [][]string {
+	if root == nil {
+		return [][]string{}
+	}
+	depth := 0
+	helper(root, 0, &depth)
+	res := make([][]string, depth)
+	for i := range res {
+		res[i] = make([]string, 1<<uint(depth)-1)
+	}
+	printer(root, len(res[0])/2, 0, 1<<uint(depth-2), res)
+	return res
+}
+
+func printer(root *TreeNode, x, y, det int, res [][]string) {
+	if root == nil {
+		return
+	}
+	res[y][x] = strconv.Itoa(root.Val)
+	printer(root.Left, x-det, y+1, det>>1, res)
+	printer(root.Right, x+det, y+1, det>>1, res)
+}
+
+func helper(root *TreeNode, y int, depth *int) {
+	if root == nil {
+		return
+	}
+	y++
+	if *depth < y {
+		*depth = y
+	}
+	helper(root.Left, y, depth)
+	helper(root.Right, y, depth)
+}

+ 40 - 0
medium/658.find-k-closest-elements.go

@@ -0,0 +1,40 @@
+func findClosestElements(arr []int, k int, x int) (res []int) {
+	n := len(arr)
+	beg, end := 0, n-1
+	for beg <= end {
+		mid := beg + (end-beg)/2
+		if arr[mid] < x {
+			beg = mid + 1
+		} else {
+			end = mid - 1
+		}
+	}
+	if beg == n {
+		return arr[n-k:]
+	} else if arr[beg] == x {
+		res = append(res, x)
+		beg, end = beg-1, beg+1
+		k--
+	} else {
+		beg, end = beg-1, beg
+	}
+	for ; 0 < k; k-- {
+		if beg < 0 {
+			res = append(res, arr[end])
+			end++
+		} else if n <= end {
+			res = append(res, arr[beg])
+			beg--
+		} else {
+			if x-arr[beg] <= arr[end]-x {
+				res = append(res, arr[beg])
+				beg--
+			} else {
+				res = append(res, arr[end])
+				end++
+			}
+		}
+	}
+	sort.Ints(res)
+	return res
+}

+ 3 - 0
medium/659.split-array-into-consecutive-subsequences.go

@@ -0,0 +1,3 @@
+func isPossible(nums []int) bool {
+	
+}