【剑指offer】【python】面试题2~5

  使用python实现《剑指offer》面试题ヾ(?°∇°?)??,以此记录。

2_实现Singleton模式

题目:实现单例模式

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例

原理:使用模块时,第一次导入会生成.pyc文件(存放相应目录下的__pycache__文件夹内),当第二次使用该模块时会直接加载pyc文件。所以,将函数、数据等定义在一个模块中即可完成一个单例对象。

class Singleton(object):
    def func(self):
        print("I‘m a singleton!")

s=Singleton()

3_数组中重复的数字

题目:找出数组中重复的数字

def distinct(l):
    l_new=[]
    for i in l:
        if l.count(i)>1:
            l_new.append(i)
    return list(set(l_new))

if __name__ == ‘__main__‘:
    print(distinct([1,2,4,12,2,2,4]))

  

4_二位数组中的查找

题目:输入一个二维数组和一个整数,判断数组中是否含有该整数。且二维数组每行每列都递增排序。

def double_dimensional_array(array,num):
    for i in range(len(array)):
        for j in range(len(array[0])):
            if num==array[i][j]:
                return True
    return False

if __name__ == ‘__main__‘:
    da=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
    print(double_dimensional_array(da,7))
    print(double_dimensional_array(da,23))

  

5_替换空格

题目:把字符串中的空格替换成指定字符

def replace_blank(content,symbol):
    content_new=‘‘
    for i in content:
        if i==‘ ‘:
            content_new+=symbol
        else:
            content_new+=i
    return content_new
if __name__ == ‘__main__‘:
    print(replace_blank(‘nice to meet you!‘,‘%20‘))

  

原文地址:https://www.cnblogs.com/lilip/p/10400143.html

时间: 2024-08-01 22:11:53

【剑指offer】【python】面试题2~5的相关文章

《剑指offer》面试题39 二叉树的深度(java)

摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就想看看有什么高大上的改造,毕竟要传递多个参数,是不是会涉及到那么一点点设计模式呢?),简直不能忍了,我只能用一句话形容:"一本正经的胡说八道",不过我就是喜欢看你胡说八道还迷之自信的样子. 下面吐槽一下这个版本的java代码: 1 //高效率的判断是否是一棵平衡二叉树 2 public b

【剑指offer】面试题2:实现Singleto模式 java

题目:设计一个类,我们只能生成该类的一个实例. /*一种可行的方式就是采用类级内部类,在这个类级内部类里面去创建对象实例. * 这样一来,只要不使用到这个类级内部类,那就不会创建对象实例, * 从而同时实现延迟加载和线程安全. * */ public class Singleton5 { private Singleton5() {//私有方法确保只创建一个实例 // TODO Auto-generated constructor stub } /** * 类级的内部类,也就是静态的成员式内部类

《剑指offer》面试题28:字符串排序(牛客网版本) java

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 这里尤其需要注意2点:1.所有组合不能重复,比如输入"aa",  那么输出的结果应当是"aa" : 2. 输出结果按字典序排序 如果用<剑指offer>上的方法,显然这两点都不能满足,比如

《剑指offer》 面试题53 :正则表达式匹配 Java

引言:这道题情况比较复杂,边界条件较多,为了便于以后复习,整理一下.另外,由于C语言和Java对于字符串的操作存在不一样的地方,代码也存在改动. 题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次).在本题中,匹配是指字符串的所有字符匹配整个模式.例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"及&quo

《剑指Offer》面试题:二维数组中的查找

题目 题目:在一个二维数组中,每一行都按照从左到右的顺序进行了排序,每一列都按照从上到下进行了排序. 输入这样的一个二维数组arr和一个整数k,判断数组中是否存在这个数. 思路 由于数组时有序的这样一个前提,因此 从右上角开始查找 :如果要查找的数比右上角的值大,则查找范围删除掉(并不是实际的删除,只需要改变下标即可)这一行,如果要查找的数比右上角的值小,则查找范围删除掉这一列:这样就可以将查找范围逐渐缩小,直至完成搜索 当然也可以从右下角开始查找,但是不可以从左上角或者是左下角开始查找(因为这

【剑指offer】面试题 2. 实现 Singleton模式

面试题 2. 实现 Singleton模式 题目:设计一个类,我们只能生成该类的一个实例. 单例模式:确保一个类只有一个实例,并提供了一个全局访问点. Code 1.饿汉模式 //饿汉模式 public class Singleton1 { //私有化构造方法 private Singleton1(){} private static Singleton1 instance = new Singleton1(); public static Singleton1 getInstance1(){

【剑指offer】面试题 4.二维数组中的查找

面试题 4. 二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 举例 例如下面的二维数组就是每行.每列都递增排列.如果在这个数组中查找数字7,则返回true;如果查找数字5,由于 数组不含有该数字,则返回false. 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 复杂度:O(M + N) + O(1) 代码实现 public

【剑指offer】面试题 11. 旋转数组的最小数字

面试题 11. 旋转数组的最小数字 题目描述 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转, 输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 解答 复杂度:O(logN) + O(1) public class Solution { public int minNumberInRotateArray(int

【剑指offer】面试题 28. 对称的二叉树

面试题 28. 对称的二叉树 题目描述 题目:请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 解答过程 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / 2 2 / \ / 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / 2 2 \ 3 3 代码 /** * Definition for a binary tree nod

【剑指offer】面试题 29. 顺时针打印矩阵

面试题 29. 顺时针打印矩阵 题目描述 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解答过程 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 代码实现 import java.util.