func findLUSlength(strs []string) int {
res, n := -1, len(strs)
for i := 0; i < n; i++ {
if len(strs[i]) < res {
continue
}
j := -1
for j < n {
j++
if i != j && isSub(strs[i], strs[j]) {
break
}
}
if j == n {
res = max(res, len(strs[i]))
}
}
return res
}
func max(x, y int) int {
if x > y {
return x
}
return y
}
func isSub(a, b string) bool {
i, j := 0, 0
for i < len(a) && j < len(b) {
if a[i] == b[j] {
i++
j++
}
}
return i == len(a)
}
func checkSubarraySum(nums []int, k int) bool {
m := make(map[int]int)
m[0] = -1
sum := 0
for i := 0; i < len(nums); i++ {
sum += nums[i]
if k != 0 {
sum %= k
}
prev, ok := m[sum]
if ok {
if i-prev > 1 {
return true
}
} else {
m[sum] = i
}
}
return false
}
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func helper(s, t *TreeNode) bool {
if s == nil && t == nil {
return true
}
if s == nil || t == nil {
return false
}
if s.Val != t.Val {
return false
}
return helper(s.Left, t.Left) && helper(s.Right, t.Right)
}
func isSubtree(s *TreeNode, t *TreeNode) bool {
if s == nil {
return false
}
if helper(s, t) {
return true
}
return isSubtree(s.Left, t) || isSubtree(s.Right, t)
}