剑指offer1~3题
1. 二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
**分析:**当选中数组的某个确定的值例如x,右侧和下侧都是大于x,,做好的做法是找到一个特殊的位置例如右上角(或者左下角),因为右上角的左侧小于本身,下侧大于本身,要求的值大于本身下移,小于本身左移。
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array)-1
clos = len(array[0])-1
i = 0
while i <= rows and clos >=0:
if array[i][clos] == target:
return True
elif array[i][clos] > target:
clos -= 1
else:
i += 1
return False
2.替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
s_new=""
for i in s:
if i==" ":
i="%20"
s_new+=i
else:
s_new += i
return s_new
3.从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
class Solution:
def printListFromTailToHead(self, listNode):
# write code here
list=[]
while listNode:
list.append(listNode.val)
listNode = listNode.next
return list[::-1]