剑指offer 算法题 python版 更新中

来源:互联网 发布:金数据 - 登录 编辑:程序博客网 时间:2024/06/08 19:40

1.二维数组中的查找

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

# -*- coding:utf-8 -*-class Solution:    # array 二维列表    def Find(self, target, array):        # write code here        n = len(array)        for i in xrange(n):            if target in array[i]:                return "true"            else:                continues = Solution()listcase = input()array = listcase[1]target = listcase[0]print s.Find(target, array)

测试用例: 7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]] 对应输出应该为:
true
把矩阵看作数组中包含数组,用input()接收2输入,然后解开target和array传给Find,Find里面判断数组长度,然后以长度的范围为下标,遍历出每个数组,再判断target是否在数组里面,在的话输出true

2.O(1)时间复杂度实现入栈出栈获得栈中最小元素最大元素

#定义栈结构,根据栈的后进先出特性,增加辅助栈,来存储当前状态下数据栈中的最小、最大元素。class Stack(object):    def __init__(self):        self.data = []        self.minValue = []        self.maxValue = []    def push(self,data):        self.data.append(data)        if len(self.minValue)==0:            self.minValue.append(data)        else:            if data <= self.minValue[-1]:                self.minValue.append(data)        if len(self.maxValue)==0:            self.maxValue.append(data)        else:            if data>=self.maxValue[-1]:                self.maxValue.append(data)    def pop(self):        if len(self.data)==0:            return None        else:            temp = self.data.pop()            if temp == self.minValue[-1]:                self.minValue.pop()            if temp == self.maxValue[-1]:                self.maxValue.pop()            return temp    def min(self):        if len(self.data)==0:            return None        else:            return self.minValue[-1]    def max(self):        if len(self.data)==0:            return None        else:            return self.maxValue[-1]    def show(self):        print("stack data")        for data in self.data:            print(data)        print("min",self.min())        print("max",self.max())if __name__ == "__main__":    s = Stack()    s.push(2)    s.push(1)    s.show()    s.push(4)    s.push(3)    s.push(2)    s.show()    s.pop()    s.show()    s.pop()    s.show()

3.判断闰年

#判断闰年 整百年能被400整除的是闰年 非整百年能被4整除的为闰年year = int(input(("请输入年份:")))if (year%4) == 0:    if (year%100) == 0:        if (year%400) == 0:            print(("{}年 是闰年").format(year))        else:            print(("{}年 是平年").format(year))    else:        print(("{}年 是闰年").format(year))else:    print(("{}年 是平年").format(year))
原创粉丝点击