题目:二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中
def find_integer(matrix, num):
if not matrix:
return False
rows, cosl = len(matrix), len(matrix[0])
row, col = rows-1, 0
while row>=0 and col < cols:
if matrix[row][col] == num:
return True
elif matrix[row][col] < num:
col+=1
else:
row-=1
return False
题目:把字符串中的空格替换成'20%'
print(input().replace(" ", "20%"))
题目:从尾到头打印单链表
def print_link_recursion(links):
if links:
print_link_recursion(links.next)
print links.val
题目:重建二叉树
def construct_tree(preorder=None, inorder=None):
"""
构建二叉树
"""
if not preorder or not inorder:
return None
index = inorder.index(preorder[0])
left = inorder[0:index]
right = inorder[index+1:]
root = TreeNode(preorder[0])
root.left = construct_tree(preorder[1:1+len(left)], left)
root.right = construct_tree(preorder[-len(right):], right)
return root
题目:两个栈实现队列
class my_queue(object):
def __init__(self):
self.stack = []
self.stack2 = []
def push(self, val):
self.stack.append(val)
def pop(self):
if self.stack2:
return self.stack2.pop()
while self.stack:
self.stack2.append(self.stack.pop())
return self.stack2.pop() if self.stack2 else u'队列为空'
题目:把递增数组的前面部分数字移到队尾,求数组中的最小值,例如[3,4,5,6,1,2]
def find_min(nums):
if not nums:
return False
length=len(nums)
left, right = 0, length
while nums[left] >= nums[right]:
if right - left == 1:
return nums[right]
mid = (left + right)/2
if nums[left] == nums[right] == nums[mid]:
return min(nums)
if nums[left] <= nums[mid]:
left = mid
if nums[right] >= nums[mid]:
right = mid
return nums[0]
题目:斐波那契数列
def fib(nums):
a, b = 0, 1
for i in range(nums):
yield b
a, b = b, a+b
题目:二进制中的1
def num_of_1(n):
ret = 0
while n:
ret += 1
n = n & n-1
return ret