题目1:二维数组的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

class Solution:
# array 二维列表
def Find(self, target, array):
for i in range(len(array)):
for j in range(len(array[0])):
if array[i][j] == target:
return True
return False array = [[1,2,3],[4,5,6],[7,8,9]]
solution = Solution()
print(solution.Find(9,array))

题目2:替换空格

题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

class Solution:
# s 源字符串
def replaceSpace(self, s):
s =s.replace(' ','%20')
# s = '%20'.join(s.split(' '))
return s
# write code here str = "We Are Happy."
solution = Solution()
print(solution.replaceSpace(str))

题目3:从尾到头打印链表 

题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

class ListNode:
def __init__(self, x):
self.val = x
self.next = None class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
newlist = []
while listNode:
newlist.append(listNode.val)
listNode = listNode.next
return newlist[::-1] A1 = ListNode(1)
A2 = ListNode(2)
A3 = ListNode(3)
A4 = ListNode(4)
A5 = ListNode(5) A1.next = A2
A2.next = A3
A3.next = A4
A4.next = A5 solution = Solution()
print(solution.printListFromTailToHead(A1))

题目4:重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

(前序:根-左-右 中序:左-根-右  后序:左-右-跟)

class Solution:
# 返回构造的TreeNode根节点
def reConstructBinaryTree(self, pre, tin):
# write code here
if len(pre)==0:
return None
elif len(pre)==1:
return TreeNode(pre[0])
else:
root=TreeNode(pre[0])
#根节点的索引
post = tin.index(pre[0])
root.left=self.reConstructBinaryTree(pre[1:post+1],tin[:post])
root.right=self.reConstructBinaryTree(pre[post+1:],tin[post+1:])
return root

题目5:用2个栈实现队列

class Solution:
def __init__(self):
#A为入栈,B为出栈
self.stackA=[]
self.stackB=[]
def push(self, node):
#入栈直接压入就行
self.stackA.append(node)
# write code here
def pop(self):
# return xx
#如果B不为空,先将B出栈
if self.stackB:
return self.stackB.pop()
#如果A为空,返回None
elif not self.stackA:
return None
else:
while self.stackA:
#将栈A出栈的值反压入栈B中,出栈时就说先入先出
self.stackB.append(self.stackA.pop())
return self.stackB.pop()

题目6:旋转数组的最小数字 

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

解法1:(懒)

class Solution:
def minNumberInRotateArray(self, rotateArray): if len(rotateArray)==0:
return 0
else:
return min(rotateArray)

解法2:(无脑)

class Solution:
def minNumberInRotateArray(self, rotateArray): if len(rotateArray)==0:
return 0
else:
for i in range(1,len(rotateArray)):
if rotateArray[0]>rotateArray[i]:
rotateArray[0],rotateArray[i] = rotateArray[i],rotateArray[0]
return rotateArray[0] 

题目7:斐波拉契数列

题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

解法1:递归(时间复杂度太大,可能编译不通过)

class Solution:
def Fibonacci(self, n):
if n <=0:
return 0
elif n <= 2:
return 1
return self.Fibonacci(n-1)+self.Fibonacci(n-2)

解法2:循环就完了

class Solution:
def Fibonacci(self, n):
if n ==0:
return 0
elif n == 1:
return 1
else:
big = 1
small = 0
for i in range(2,n+1):
big,small = big+small,big
return big

题目8:跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

倒着想.n级的跳法=n-1级的跳法+n-2级的跳法,实际上也是斐波拉契数列的问题

class Solution:
def jumpFloor(self, number):
if number==0:
return 0
elif number<=2:
return number
else:
f1,f2 = 1,2
for i in range(3,number+1):
f1,f2 = f2,f1+f2
return f2

题目9:变态跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

同上一题

f(n)=f(0)+f(1)+...+f(n-1)  f(n-1)=f(0)+f(1)+...+f(n-2)  第一个式子减第二个式子f(n)=2f(n-1)

class Solution:
def jumpFloor(self, number):
if number==0:
return 0
elif number<=2:
return number
else:
f1,f2 = 1,2
for i in range(3,number+1):
f1,f2 = f2,2*f2
return f2 

题目10:矩形覆盖

题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

也是斐波拉契数列的问题,第一次横着放f(n-1),竖着放(必须放2个)f(n-2)   f(n)=f(n-1)+f(n-2)

class Solution:
def rectCover(self, number):
if number==0:
return 0
elif number<=2:
return number
else:
f1,f2 = 1,2
for i in range(3,number+1):
f1,f2 = f2,f1+f2
return f2

题目11:二进制中1的个数

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

负数先与0xffffffff做与运算

    def NumberOf1(self, n):
# write code here
return bin(n&0xffffffff).count('1')  

题目12:数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

emmm   硬来

class Solution:
def Power(self, base, exponent):
if base==0:
return 0
elif base==1 or exponent==0:
return 1
elif exponent==1:
return base
else:
result = 1.0
for i in range(abs(exponent)):
result *= base
if exponent < 0 :
return 1.0/result
else:
return result
# write code here

题目13:调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

class Solution:
def reOrderArray(self, array):
if len(array) <= 1:
return array
else:
result = []
list = []
for i in range(len(array)):
if array[i]%2 != 0:
result.append(array[i])
else:
list.append(array[i])
for j in list:
result.append(j)
return result
# write code here

题目14:链表中倒数第K个节点

题目:输入一个链表,输出该链表中倒数第k个结点。

将链表转化成列表在求节点的值

class Solution:
def FindKthToTail(self, head, k):
if head == None or k <= 0:
return None
l = []
while head != None:
l.append(head)
head = head.next
if k>len(l):
return None
else:
result = l[-k]
return result
# write code here

题目15:反转链表

题目:输入一个链表,反转链表后,输出新链表的表头。

class Solution:
# 返回ListNode
def ReverseList(self, pHead):
if pHead==None or pHead.next==None:
return pHead
result=None
while pHead!=None:
temp=pHead.next
pHead.next=result
result=pHead
pHead=temp
return result
# write code here

题目16:合并2个排序的链表

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
if pHead1==None and pHead2==None:
return None
num1=[]
num2=[]
while pHead1!=None:
num1.append(pHead1.val)
pHead1=pHead1.next
while pHead2!=None:
num2.append(pHead2.val)
pHead2=pHead2.next
num=num1+num2
num.sort()
pHead=ListNode(num[0])
pre=pHead
for i in range(1,len(num)):
node=ListNode(num[i])
pre.next=node
pre=pre.next
return pHead 

题目17:树的子结构

pass

题目18:二叉镜像树

pass

题目19:顺时针打印矩阵

<剑指offer>面试题的更多相关文章

  1. Java面试题—初级(7)

    作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察.特别对于初级开发者,面试可能不会去问框架相关知识,但是绝对不会不去考察数据库知识,这里收集 ...

  2. Java面试题—初级(9)

    139. Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 好处: 1.类型安全,提供编译期 ...

  3. python面试题--初级(二)

    基础不牢,地动山摇,面试的时候经常会被问到一些平时基础的很容易被忽视的知识点,所以重在积累,多看多背深入理解,才能在某一天工作中豁然开朗恍然大悟. 面试题不仅仅为了应付面试,更是知识点的一个梳理总结归 ...

  4. 面试题<初级>

    INTERVIEW .markdown-body ul pre code { background:red; font-size:40px; } @code-char:"```" ...

  5. Java面试题—初级(4)

    31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz" ...

  6. Java面试题—初级(3)

    21.ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态 ...

  7. Java面试题—初级(2)

    11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用 ...

  8. Java面试题—初级(1)

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  9. Java面试题—初级(5)

    41.a.hashCode() 有什么用?与 a.equals(b) 有什么关系? hashCode() 方法对应对象整型的 hash 值.它常用于基于 hash 的集合类,如 Hashtable.H ...

  10. Java面试题—初级(8)

    基本表结构:  student(sno,sname,sage,ssex)学生表        course(cno,cname,tno) 课程表        sc(sno,cno,score) 成绩 ...

随机推荐

  1. 线程池 一 ScheduledThreadPoolExecutor

    java.util.concurrent public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ...

  2. 关于windows下远程连接Linux服务器的方法(CentOs)

    1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers   最后两 ...

  3. 几道51nod上据说是提高组难度的dp题

    1409 加强版贪吃蛇 听着懵逼做着傻逼. 每个格子只能经过一次,穿过上下界答案清0,不考虑穿的话就随便dp.如果要穿就是从尽可能上面的位置穿过上界,尽可能下面的位置穿过下界. 那么转移这一列之前找一 ...

  4. 一幅图解决R语言绘制图例的各种问题

    一幅图解决R语言绘制图例的各种问题 用R语言画图的小伙伴们有木有这样的感受,"命令写的很完整,运行没有报错,可图例藏哪去了?""图画的很美,怎么总是图例不协调?" ...

  5. 在jsp页面直接读取mysql数据库显示数据

    闲来无事,学学java,虽说编程语言相通,但是接触一门新知识还是有些疑惑,边学边记录,方便以后温故. 直接给出代码: <%@page import="java.sql.ResultSe ...

  6. ncurse 笔记

    初始化与结束 为了使用 NCURSES 库,你应该 #include <curses.h>,在编译时,应该加上 -lncurses. stdscr 一般地,第一个函数调用必须是 inits ...

  7. 20140502 static_cast和dynamic_cast的类型检查 双链表建立,删除,打印

    1.static_cast和dynamic_cast的类型检查 static_cast的类型检查:只检查无关类之间的转换 CBaseY* pY1 = static_cast<CBaseY*> ...

  8. express 创建项目

    express 创建项目: 1.熟悉express命令 2.创建模板 3.安装组件

  9. Spring Boot Server容器配置

    参数配置容器 server.xx开头的是所有servlet容器通用的配置,server.tomcat.xx开头的是tomcat特有的参数,其它类似. 所有参数绑定配置类:org.springframe ...

  10. C++数据类型之字符型&转义字符

    字符型 **作用:** 字符型变量用于显示单个字符 **语法:**  char ch = 'a'; > 注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号 > 注意2:单引号内 ...