在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Two players play a turn based game on a binary tree. We are given the Initially, the first player names a value Then, the players take turns starting with the first player. In each turn, that player chooses a node of their color (red if player 1, blue if player 2) and colors an uncolored neighbor of the chosen node (either the left child, right child, or parent of the chosen node.) If (and only if) a player cannot choose such a node in this way, they must pass their turn. If both players pass their turn, the game ends, and the winner is the player that colored more nodes. You are the second player. If it is possible to choose such a Example 1: Input: root = [1,2,3,4,5,6,7,8,9,10,11], n = 11, x = 3 Output: True Explanation: The second player can choose the node with value 2. Constraints:
有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点
游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时, 「一号」玩家从 「二号」玩家也从 「一号」玩家给值为
之后两位玩家轮流进行操作,每一回合,玩家选择一个他之前涂好颜色的节点,将所选节点一个 未着色 的邻节点(即左右子节点、或父节点)进行染色。 如果当前玩家无法找到这样的节点来染色时,他的回合就会被跳过。 若两个玩家都没有可以染色的节点时,游戏结束。着色节点最多的那位玩家获得胜利 ✌️。 现在,假设你是「二号」玩家,根据所给出的输入,假如存在一个
示例: 输入:root = [1,2,3,4,5,6,7,8,9,10,11], n = 11, x = 3 输出:True 解释:第二个玩家可以选择值为 2 的节点。 提示:
Runtime: 12 ms
Memory Usage: 20.8 MB
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * public var val: Int 5 * public var left: TreeNode? 6 * public var right: TreeNode? 7 * public init(_ val: Int) { 8 * self.val = val 9 * self.left = nil 10 * self.right = nil 11 * } 12 * } 13 */ 14 class Solution { 15 func btreeGameWinningMove(_ root: TreeNode?, _ n: Int, _ x: Int) -> Bool { 16 var ls:Int = 0 17 var rs:Int = 0 18 dfs(root,x,&ls,&rs) 19 return max(max(ls,rs),n - ls - rs - 1) > (n>>1) 20 } 21 22 func work(_ root: TreeNode?) -> Int 23 { 24 if root == nil {return 0} 25 return work(root!.left) + work(root!.right) + 1 26 } 27 28 func dfs(_ root: TreeNode?,_ x:Int,_ ls:inout Int,_ rs:inout Int) 29 { 30 if root == nil {return} 31 if root!.val == x 32 { 33 ls = work(root!.left) 34 rs = work(root!.right) 35 } 36 else 37 { 38 dfs(root!.left,x,&ls,&rs) 39 dfs(root!.right,x,&ls,&rs) 40 } 41 } 42 }
|
请发表评论