查看答案
查看答案
查看答案
查看答案
查看答案
查看答案
查看答案
查看答案
查看答案
func sum(_ nums:[Int], _ target:Int) -> Bool {
var dic:[Int:Int] = [:]
for num in nums {
guard let _ = dic[num] else {
dic[target - num] = num
continue
}
return true
}
return false
}
因为既然数组有两个数之后等于目标值,那么这两个值一定在数组里面。我们按照顺序,查询剩余的值是否存在即可。
查看答案
func sum(_ nums:[Int], _ target:Int) -> (Int,Int)? {
var dic:[Int:Int] = [:]
for item in nums.enumerated() {
guard let index = dic[item.element] else {
dic[target - item.element] = item.offset
continue
}
return (index,item.offset)
}
return nil
}
查看答案
func getLeftList(_ node:ListNode?, _ x:Int) -> ListNode? {
guard let head = node else {
return node
}
if head.val >= x {
return getLeftList(head.next, x)
} else {
head.next = getLeftList(head.next, x)
return head
}
}
查看答案
// 计算树的最大深度
func maxDepth(root: TreeNode?) -> Int {
guard let root = root else {
return 0
}
return max(maxDepth(root.left), maxDepth(root.right)) + 1
}
查看答案
// 判断一颗二叉树是否为二叉查找树
func isValidBST(root: TreeNode?) -> Bool {
return _helper(root, nil, nil)
}
private func _helper(node: TreeNode?, _ min: Int?, _ max: Int?) -> Bool {
guard let node = node else {
return true
}
// 所有右子节点都必须大于根节点
if let min = min, node.val <= min {
return false
}
// 所有左子节点都必须小于根节点
if let max = max, node.val >= max {
return false
}
return _helper(node.left, min, node.val) && _helper(node.right, node.val, max)
}