第148周周賽

2021-09-25 20:45:57 字數 2085 閱讀 5314

給你乙個整數陣列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為奇數,其中每個節點上的值從1n各不相同。

遊戲從「一號」玩家開始(「一號」玩家為紅色,「二號」玩家為藍色),最開始時,

「一號」玩家從[1, n]中取乙個值x1 <= x <= n);

「二號」玩家也從[1, n]中取乙個值y1 <= 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。演算法 我們可以對以上...