dengxinyi 6 anni fa
parent
commit
23b2ae24fb
2 ha cambiato i file con 70 aggiunte e 0 eliminazioni
  1. 44 0
      medium/567.permutation-in-string.go
  2. 26 0
      medium/576.out-of-boundary-paths.go

+ 44 - 0
medium/567.permutation-in-string.go

@@ -0,0 +1,44 @@
+func checkInclusion(s1 string, s2 string) bool {
+	m, n := len(s1), len(s2)
+	if n < m {
+		return false
+	}
+	freq := make([]int, 256)
+	for _, r := range s1 {
+		freq[r]++
+	}
+	beg, end := 0, -1
+	cnt := make([]int, 256)
+	for end < n {
+		for beg = end + 1; beg < n && freq[s2[beg]] == 0; beg++ {
+		}
+		copy(cnt, freq)
+		for end = beg; end < n; end++ {
+			ch := s2[end]
+			if freq[ch] == 0 {
+				break
+			}
+			cnt[ch]--
+			for cnt[ch] < 0 {
+				cnt[s2[beg]]++
+				beg++
+			}
+			if isEmpty(cnt) {
+				return true
+			}
+		}
+	}
+	if isEmpty(cnt) {
+		return true
+	}
+	return false
+}
+
+func isEmpty(cnt []int) bool {
+	for i := 'a'; i <= 'z'; i++ {
+		if cnt[i] != 0 {
+			return false
+		}
+	}
+	return true
+}

+ 26 - 0
medium/576.out-of-boundary-paths.go

@@ -0,0 +1,26 @@
+const MOD int = 1000000007
+
+var dy = []int{0, 1, 0, -1}
+var dx = []int{1, 0, -1, 0}
+
+func findPaths(m int, n int, N int, i int, j int) int {
+	var dp [50][50]int
+	for k := 0; k < N; k++ {
+		var nxt [50][50]int
+		for y := 0; y < m; y++ {
+			for x := 0; x < n; x++ {
+				for d := 0; d < 4; d++ {
+					ny, nx := y+dy[d], x+dx[d]
+					if ny == -1 || ny == m || nx == -1 || nx == n {
+						nxt[y][x]++
+					} else {
+						nxt[y][x] = (nxt[y][x] + dp[ny][nx]) % MOD
+					}
+				}
+			}
+		}
+		dp = nxt
+	}
+	return dp[i][j]
+}
+