給你乙個整數陣列nums
,每次操作會從中選擇乙個元素並將該元素的值減少 1。
如果符合下列情況之一,則陣列a
就是鋸齒陣列:
返回將陣列nums
轉換為鋸齒陣列所需的最小操作次數
我的思路以為是dp,想了半天的狀態轉移方程未果,最後結束看了別人的**,自己用python寫的:
class solution(object):
,樹上總共有def movestomakezigzag(self, nums):
""":type nums: list[int]
:rtype: int
"""if len(nums) < 3:
return 0
s,t = 0,0
a,b = 0,0
l = len(nums)
for i in range(0,l,2):
j = 0
if i:
j = max(j,nums[i]-nums[i-1]+1)
if i有兩位極客玩家參與了一場「二叉樹著色」的遊戲。遊戲中,給出二叉樹的根節點root
n
個節點,且n
為奇數,其中每個節點上的值從1
到n
各不相同。遊戲從「一號」玩家開始(「一號」玩家為紅色,「二號」玩家為藍色),最開始時,
「一號」玩家從
[1, n]
中取乙個值x
(1 <= x <= n
);「二號」玩家也從
[1, n]
中取乙個值y
(1 <= y <= n
)且y != x
。「一號」玩家給值為
x
的節點染上紅色,而「二號」玩家給值為y
的節點染上藍色。之後兩位玩家輪流進行操作,每一回合,玩家選擇乙個他之前塗好顏色的節點,將所選節點乙個未著色的鄰節點(即左右子節點、或父節點)進行染色。
如果當前玩家無法找到這樣的節點來染色時,他的回合就會被跳過。
若兩個玩家都沒有可以染色的節點時,遊戲結束。著色節點最多的那位玩家獲得勝利 ✌️。
現在,假設你是「二號」玩家,根據所給出的輸入,假如存在乙個
y
值可以確保你贏得這場遊戲,則返回true
;若無法獲勝,就請返回false
。
class solution(object):
def btreegamewinningmove(self, root, n, x):
#整體思路先找到當前與x值相等的樹節點,之後看該結點的左側,右側,父節點這三部分是否有其中部分大於其餘兩部分結點數和,有則返回true,反之的返回false
""":type root: treenode
:type n: int
:type x: int
:rtype: bool
"""self.x = none
def dfs(now):
if now == none:
return
if now.val == x:
self.x = now
return
dfs(now.left)
dfs(now.right)
dfs(root)
def count(root):
if not root:
return 0
return 1 + count(root.left) + count(root.right)
l = count(self.x.left)
r = count(self.x.right)
top = n-l-r-1
if top > l+r+1 or l > top+r+1 or r>top+l+1:
return true
return false
LeetCode周賽記錄 第196場周賽
2020年7月5日,leetcode第196場周賽個人記錄。第一次參加leetcode周賽,4道題目完成3道,中國排名163,全球排名377。對我個人來說算是個普通成績吧。以後打算每兩周參加一次周賽,同時利用部落格記錄下每次的成績,同時分享一下對於題目的個人想法和感受。給你乙個數字陣列 arr 如果...
第39周雙周賽
暴力解法 class solution for int i 0 i code.length i else arr i sum sum 0 else if k 0 else arr i sum sum 0 return arr 統計左邊的b,和右邊的a,就是我們需要的操作次數,我們先將所有的的字串當做...
第123場周賽
1,989.陣列形式的整數加法 方法一 逐位相加 思路 讓我們逐位將數字加在一起。舉乙個例子,如果要計算 123 與 912 的和。我們順次計算 3 2 2 1 1 9。任何時候,當加法的結果大於等於 10 我們要將進製的 1 加入下一位的計算中去,所以最終結果等於 1035。演算法 我們可以對以上...