一、二维数组的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。于是,target比这个元素小就往上找,比这个元素大就往右找。如果出了边界,则说明二维数组中不存在target元素。
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
rows=len(array)-1
cols=len(array[0])-1
i=rows
j=0
while j<=cols and i>=0:
if target<array[i][j]:
i-=1
elif target>array[i][j]:
j+=1
else:
return True
return False
二、替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution:
# s 源字符串
def replaceSpace(self, s):
return s.replace(" ","%20")
三、从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
递归思想:
# -*- coding:utf-8 -*-
# 实现一个链表类,只有一个值val和一个指向下一个节点的next'指针'
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
if listNode is None:
return []
return self.printListFromTailToHead(listNode.next) + [listNode.val]
栈解法:
1.先遍历链表元素到栈
2.栈再弹出
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
lst,lst_bak = [],[]
if not listNode:
return lst
while listNode:
lst.append(listNode.val)
listNode = listNode.next
while lst:
lst_bak.append(lst.pop())
return lst_bak