Skip to content

Commit afcc75b

Browse files
committed
2019-09-05
1 parent 3d18c58 commit afcc75b

File tree

6 files changed

+82
-41
lines changed

6 files changed

+82
-41
lines changed

.vscode/settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"python.pythonPath": "C:\\ProgramData\\Anaconda2\\envs\\py3\\python.exe"
3+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution(object):
2+
def wiggleSort(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: None Do not return anything, modify nums in-place instead.
6+
"""
7+
if not nums:
8+
return nums
9+
i = 0
10+
while i < len(nums):
11+
if i % 2 == 0 and i < len(nums) - 1 and nums[i] > nums[i + 1]:
12+
nums[i], nums[i + 1] = nums[i + 1], nums[i]
13+
elif i % 2 and i < len(nums) - 1 and nums[i] < nums[i + 1]:
14+
nums[i], nums[i + 1] = nums[i + 1], nums[i]
15+
else:
16+
i += 1
17+
return nums

0281.锯齿迭代器/0281-锯齿迭代器.py

+21-20
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,36 @@ def __init__(self, v1, v2):
66
:type v1: List[int]
77
:type v2: List[int]
88
"""
9-
self.list = []
10-
if v1 and v2:
11-
i = 0
12-
for i in range(min(len(v1), len(v2))):
13-
self.list.append(v1[i])
14-
self.list.append(v2[i])
15-
if v1[i + 1:]:
16-
self.list += v1[i + 1:]
17-
else:
18-
self.list += v2[i + 1:]
19-
20-
elif v1:
21-
self.list = v1
22-
else:
23-
self.list = v2
24-
self.index = 0
9+
self.i1, self.i2 = 0, 0
10+
self.v1, self.v2 = v1, v2
11+
self.indicator = 0 # 0 for v1, 1 for v2
12+
2513
def next(self):
2614
"""
2715
:rtype: int
2816
"""
29-
self.index += 1
30-
return self.list[self.index - 1]
17+
if not self.indicator:
18+
self.indicator = 1
19+
if self.i1 < len(self.v1):
20+
self.i1 += 1
21+
return self.v1[self.i1 - 1]
22+
else:
23+
self.i2 += 1
24+
return self.v2[self.i2 - 1]
25+
else:
26+
self.indicator = 0
27+
if self.i2 < len(self.v2):
28+
self.i2 += 1
29+
return self.v2[self.i2 - 1]
30+
else:
31+
self.i1 += 1
32+
return self.v1[self.i1 - 1]
3133

3234
def hasNext(self):
3335
"""
3436
:rtype: bool
3537
"""
36-
return self.index != len(self.list)
37-
38+
return self.i1 < len(self.v1) or self.i2 < len(self.v2)
3839

3940
# Your ZigzagIterator object will be instantiated and called as such:
4041
# i, v = ZigzagIterator(v1, v2), []

0283.移动零/0283-移动零.py

+8-11
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ class Solution(object):
22
def moveZeroes(self, nums):
33
"""
44
:type nums: List[int]
5-
:rtype: void Do not return anything, modify nums in-place instead.
5+
:rtype: None Do not return anything, modify nums in-place instead.
66
"""
7-
l = len(nums)
8-
for index,item in enumerate(nums):
9-
if item != 0:
10-
continue
11-
else:
12-
for index0 in range(index+1,l):
13-
if nums[index0] != 0:
14-
print nums[index], nums[index0]
15-
nums[index], nums[index0] = nums[index0], nums[index]
16-
break
7+
i = 0
8+
for j in range(len(nums)):
9+
if nums[j] != 0:
10+
nums[i], nums[j] = nums[j], nums[i]
11+
i += 1
12+
13+
# return nums

0284.顶端迭代器/0284-顶端迭代器.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,32 @@ def __init__(self, iterator):
2525
Initialize your data structure here.
2626
:type iterator: Iterator
2727
"""
28-
self.list = list()
29-
while(iterator.hasNext()):
30-
self.list.append(iterator.next())
28+
self.l = []
29+
while iterator.hasNext():
30+
self.l.append(iterator.next())
31+
# self.l = iterator
32+
self.index = 0
33+
3134

3235
def peek(self):
3336
"""
3437
Returns the next element in the iteration without advancing the iterator.
3538
:rtype: int
3639
"""
37-
return self.list[0]
38-
40+
return self.l[self.index]
3941

4042
def next(self):
4143
"""
4244
:rtype: int
4345
"""
44-
return self.list.pop(0)
45-
46-
46+
self.index += 1
47+
return self.l[self.index - 1]
4748

4849
def hasNext(self):
4950
"""
5051
:rtype: bool
5152
"""
52-
return len(self.list) != 0
53-
53+
return self.index < len(self.l)
5454

5555
# Your PeekingIterator object will be instantiated and called as such:
5656
# iter = PeekingIterator(Iterator(nums))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 inorderSuccessor(self, root, p):
10+
"""
11+
:type root: TreeNode
12+
:type p: TreeNode
13+
:rtype: TreeNode
14+
"""
15+
if not root:
16+
return None
17+
def inorder(node):
18+
if not node:
19+
return []
20+
return inorder(node.left) + [node] + inorder(node.right)
21+
l = inorder(root)
22+
i = l.index(p)
23+
return l[i + 1] if i < len(l) - 1 else None

0 commit comments

Comments
 (0)