1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:判断数组中是否有该整数,因此返回值为false或true。定义查询函数Find(),使用循环判断输入的整数是否在array中,设置flag位,若含有则返回true,否则返回false。
/* 判断整数是否在二维数组里 */
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
N = len(array)
flag = 'false'
for i in range(N):
if target in array[i]:
flag = 'true';
break
return flag
while True:
try:
s = Solution()
#字符串转化为list
L = list(eval(raw_input()))
array = L[1]
target = L[0]
print(s.Find(target, array))
except:
break
2.请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution:
# s 源字符串
def replaceSpace(self, s):
return s.replace(" ", "%20")
/* 方法2 */
class Solution:
def replaceSpace(self, s):
s = list(s)
n = len(s)
for i in range(n):
if s[i] == " ":
s[i] = "%20"
return "".join(s)
3.输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路:将链表值从尾到头顺序返回,可使用列表切片进行实现。
/*******************/
-*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
L = list()
while lsitNode:
L.append(listNode.val)
listNode = listNode.next
return L[::-1] //逆序输出
python列表切片点击下面链接
https://blog.csdn.net/sinat_28576553/article/details/84404653
5.输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
解题思路:前序遍历的顺序为根左右,中序遍历的顺序为左根右。二叉树在构建时采用了递归的思想,因此在还原重建时亦可以用到递归的方法。
/* python递归实现 */
/* 定义二叉树结点 */
class TreeNode:
def __init__(self, x):
self.val = x //包含结点的值
self.left = None //结点左孩子
self.right = None //结点右孩子
class Solution
def reConstructBiTree(self, pre, tin):
if not pre or not tin:
return None
root = TreeNode(pre[0]) //首先从前序遍历中找到根结点
i = tin.index(root.val) //根据已知的根结点的值,找到其在中序遍历中的index值
/* 根据根左右,左根右的思路,切片得到根结点的左半边和右半边,递归*/
root.left = self.reConstructBiTree(pre[1:i+1], tin[:i])
root.right = self.reConstructBiTree(pre[i+1:], tin[i+1:])
return root