File tree 4 files changed +127
-0
lines changed
4 files changed +127
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def movesToMakeZigzag (self , nums ):
3
+ """
4
+ :type nums: List[int]
5
+ :rtype: int
6
+ """
7
+ backup = nums [:]
8
+ cnt = 0
9
+ for i in range (1 , len (nums ), 2 ):
10
+ if i != len (nums ) - 1 :
11
+ if nums [i ] >= nums [i - 1 ] or nums [i ] >= nums [i + 1 ]:
12
+ nums [i ] = (min (nums [i - 1 ], nums [i + 1 ]) - 1 )
13
+ else :
14
+ if nums [i ] >= nums [i - 1 ]:
15
+ nums [i ] = (nums [i - 1 ] - 1 )
16
+
17
+ cnt = sum (backup ) - sum (nums )
18
+ nums = backup [:]
19
+ cnt1 = 0
20
+ for i in range (0 , len (nums ), 2 ):
21
+ if i != 0 and i != len (nums ) - 1 :
22
+ if nums [i ] >= nums [i - 1 ] or nums [i ] >= nums [i + 1 ]:
23
+ nums [i ] = (min (nums [i - 1 ], nums [i + 1 ]) - 1 )
24
+ elif i == 0 :
25
+ if nums [i ] >= nums [i + 1 ]:
26
+ nums [i ] = (nums [i + 1 ] - 1 )
27
+ elif i == len (nums ) - 1 :
28
+ if nums [i ] >= nums [i - 1 ]:
29
+ nums [i ] = (nums [i - 1 ] - 1 )
30
+ cnt1 = sum (backup ) - sum (nums )
31
+ return min (cnt , cnt1 )
Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ # class TreeNode(object):
3
+ # def __init__(self, x):
4
+ # self.val = x
5
+ # self.left = None
6
+ # self.right = None
7
+
8
+ class Solution (object ):
9
+ def btreeGameWinningMove (self , root , n , x ):
10
+ """
11
+ :type root: TreeNode
12
+ :type n: int
13
+ :type x: int
14
+ :rtype: bool
15
+ """
16
+ self .x_address = 0
17
+
18
+ def dfs (node ):
19
+ if not node :
20
+ return
21
+ if node .val == x :
22
+ self .x_address = node
23
+ return
24
+ dfs (node .left )
25
+ dfs (node .right )
26
+ dfs (root )
27
+
28
+ def cnt_node_in_subtree (node ):
29
+ if not node :
30
+ return 0
31
+ return 1 + cnt_node_in_subtree (node .left ) + cnt_node_in_subtree (node .right )
32
+ # print root.val
33
+ if root .val == x :
34
+ return cnt_node_in_subtree (root .left ) != cnt_node_in_subtree (root .right )
35
+ else :
36
+ x_cnt = cnt_node_in_subtree (self .x_address )
37
+ total_cnt = cnt_node_in_subtree (root )
38
+ left_cnt = cnt_node_in_subtree (self .x_address .left )
39
+ right_cnt = cnt_node_in_subtree (self .x_address .right )
40
+ return x_cnt < total_cnt - x_cnt or left_cnt > total_cnt - left_cnt or right_cnt > total_cnt - right_cnt
Original file line number Diff line number Diff line change
1
+ class SnapshotArray (object ):
2
+ from collections import defaultdict
3
+ def __init__ (self , length ):
4
+ """
5
+ :type length: int
6
+ """
7
+ self .history = dict ()
8
+ self .snap_id = - 1
9
+ self .history [self .snap_id ] = dict ()
10
+ def set (self , index , val ):
11
+ """
12
+ :type index: int
13
+ :type val: int
14
+ :rtype: None
15
+ """
16
+ self .history [self .snap_id ][index ] = val
17
+
18
+ def snap (self ):
19
+ """
20
+ :rtype: int
21
+ """
22
+ import copy
23
+
24
+ self .snap_id += 1
25
+ self .history [self .snap_id ] = copy .deepcopy ( self .history [self .snap_id - 1 ])
26
+ return self .snap_id
27
+
28
+ def get (self , index , snap_id ):
29
+ """
30
+ :type index: int
31
+ :type snap_id: int
32
+ :rtype: int
33
+ """
34
+ snap_id -= 1
35
+ if index in self .history [snap_id ]:
36
+ return self .history [snap_id ][index ]
37
+ else :
38
+ return 0
39
+
40
+
41
+ # Your SnapshotArray object will be instantiated and called as such:
42
+ # obj = SnapshotArray(length)
43
+ # obj.set(index,val)
44
+ # param_2 = obj.snap()
45
+ # param_3 = obj.get(index,snap_id)
Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def longestDecomposition (self , text ):
3
+ """
4
+ :type text: str
5
+ :rtype: int
6
+ """
7
+ # print text
8
+ for i in range (1 , len (text )):
9
+ if text [:i ] == text [len (text ) - i :]:
10
+ return 2 + self .longestDecomposition (text [i :len (text ) - i ])
11
+ return 1 if text else 0
You can’t perform that action at this time.
0 commit comments