'''
1、题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
'''
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
if array is None:
return False
else:
row = len(array)
col = len(array[0])
for i in range(row):
for j in range(col):
if target ==array[i][j]:
return True
else:
return False
'''
2、题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
'''
# -*- coding:utf-8 -*-
class Solutions:
# s 源字符串
def replaceSpace(self, s):
# write code here
self.s = s
s = s.split(" ")
b = "%20".join(s)
return b
'''
3、题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
'''
# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class solutions:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
if listNode is None:
return []
else:
return [self.printListFromTailToHead(listNode.next)] + [listNode.val]
'''
4、题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
'''
# -*- coding:utf-8 -*-
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class solution:
# 返回构造的TreeNode根节点
def reConstructBinaryTree(self, pre, tin):
# write code here
if not tin or not pre:
return None
else:
root = TreeNode(pre[0])
i = tin.index(root.val)
#确定下标i的值,即确定tin和pre中root下标的值,其中(left+root)保持不变,right的数量保持不变
root.left = self.reConstructBinaryTree(pre[1:i+1],tin[:i])
root.right = self.reConstructBinaryTree(pre[i+1:],tin[i+1:])
return root
'''
5、题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
'''
'''思路:A压栈 B出栈'''
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
return self.stack1.append(node)
def pop(self):
# return xx
if len(self.stack2) > 0:
return self.stack2.pop()
else:
while len(self.stack1) >0:
self.stack2.append(self.stack1.pop())
if len(self.stack2) >1:
return self.stack2.pop()