Skip to content

Commit 08fd7f4

Browse files
committedAug 4, 2019
2019-08-04
1 parent 381367b commit 08fd7f4

File tree

4 files changed

+127
-0
lines changed

4 files changed

+127
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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)
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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

0 commit comments

Comments
 (0)