Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
lwb58 committed Aug 12, 2020
1 parent dc8a38f commit b006b99
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 5 deletions.
Empty file added src/__init__.py
Empty file.
62 changes: 62 additions & 0 deletions src/stack/CQueue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# 使用两个栈构建一个队列
class MinStack(object):
count = 0
def getCount(self):
return self.count
def __init__(self):
self.stack=[]
def push(self,value):
self.count +=1
if not self.stack:
self.stack.append((value,value))
else:
self.stack.append((value,min(value,self.stack[-1][1])))
def pop(self):
self.count -=1
self.stack.pop()[0]
def top(self):
return self.stack[-1][0]
def getMin(self):
return self.stack[-1][1]

class CQueue(object):
def getCount(self):
return self.minStack.getCount()
def __init__(self):
self.minStack = MinStack()
self.tempMinStack = MinStack()

def appendTail(self, value):
self.minStack.push(value)
def deleteHead(self):
if self.tempMinStack.getCount()!=0:
temp = self.tempMinStack.top()
self.tempMinStack.pop()
return temp
count = self.minStack.getCount()
if count == 0:
return -1
for i in range(count):
value =self.minStack.top()
self.minStack.pop()
self.tempMinStack.push(value)
temp =self.tempMinStack.top()
self.tempMinStack.pop()
return temp
if __name__ == '__main__':
test = CQueue()

print(test.deleteHead())
test.appendTail("5")
test.appendTail("2")
print(test.deleteHead())
# print(test.getCount())
print(test.deleteHead())
# print(test.getCount())
# test.appendTail("c")
# print(test.getCount())
# print(test.deleteHead())
# print(test.getCount())
# print(test.deleteHead())


Empty file added src/stack/__init__.py
Empty file.
20 changes: 20 additions & 0 deletions src/stack/binaryTreeNode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Solution(object):
result = []
i=0
def inorderTraversal(self, root):
top = root[self.i]
if len(root) == self.i:
return
if root[self.i+1] is not None:
self.result.append(root[self.i+1])
self.i+=1
self.inorderTraversal(root)
else:
self.result.append(root[self.i])
self.i+=2
self.inorderTraversal(root)
if __name__ == '__main__':
test = Solution()
root = [1, None, 2, 3]
test.inorderTraversal(root)
print(test.result)
14 changes: 14 additions & 0 deletions src/stack/fib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution(object):
def fib(self,n):
a,b = 0,1
if n <2:
return n
for i in range(n):
if i >=2:
temp = a
a =b
b= temp+b
return (a+b)%1000000007
if __name__ == '__main__':
solution = Solution()
print(solution.fib(51))
25 changes: 20 additions & 5 deletions src/stack/minStack.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,38 @@
class MinStack:
class MinStack(object):
count = 0
def getCount(self):
return self.count
def __init__(self):
self.stack=[]
def push(self,value):
self.count +=1
if not self.stack:
self.stack.append((value,value))
else:
self.stack.append((value,min(value,self.stack[-1][1])))
def pop(self):
self.count -=1
self.stack.pop()[0]
def top(self):
return self.stack[-1][0]
def getMin(self):
return self.stack[-1][1]
if __name__ == '__main__':
test = MinStack()
test.push(-2)
test.push(0)
test.push(-3)
test.push("a")
print(test.getCount())
test.push("b")
print(test.getCount())
test.push("c")
print(test.getCount())
print("test")
print(test.getMin())
print(test.pop())
print(test.getCount())
print(test.top())
print(test.getMin())
print(test.getCount())
print(test.getMin())
print(test.getCount())
print(test.pop())
print(test.getCount())

0 comments on commit b006b99

Please sign in to comment.