dengxinyi 6 lat temu
rodzic
commit
15e2a61da3

+ 21 - 0
medium/481.magical-string.go

@@ -0,0 +1,21 @@
+func magicalString(n int) int {
+	if n <= 1 {
+		return n
+	}
+	l, pre, cnt := 3, 2, 1
+	queue := []int{2}
+	for l < n {
+		inc := queue[0]
+		queue = queue[1:]
+		pre = 3 - pre
+		for i := 0; i < inc && l < n; i++ {
+			queue = append(queue, pre)
+			l++
+			if pre == 1 {
+				cnt++
+			}
+		}
+	}
+	return cnt
+}
+

+ 25 - 0
medium/486.predict-the-winner.go

@@ -0,0 +1,25 @@
+func PredictTheWinner(nums []int) bool {
+	n := len(nums)
+	dp := make([][][]int, n)
+	for i := range dp {
+		dp[i] = make([][]int, n)
+	}
+	for i := 0; i < n; i++ {
+		dp[i][i] = []int{0, nums[i]}
+	}
+	for l := 2; l <= n; l++ {
+		for i := 0; i < n-l+1; i++ {
+			init, tail := dp[i][i+l-2], dp[i+1][i+l-1]
+			t := l % 2
+			score := make([]int, 2)
+			if nums[i]+tail[t]-tail[1-t] <= nums[i+l-1]+init[t]-init[1-t] {
+				score[t], score[1-t] = nums[i+l-1]+init[t], init[1-t]
+			} else {
+				score[t], score[1-t] = nums[i]+tail[t], tail[1-t]
+			}
+			dp[i][i+l-1] = score
+		}
+	}
+	t := n % 2
+	return dp[0][n-1][1-t] <= dp[0][n-1][t]
+}

+ 3 - 0
medium/491.increasing-subsequences.go

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