摘要:
题目:实现一个函数,把字符串中的每个空格替换成%20。例如,输入“We are happy.”,输出”We%20are%20happy.“。要求在原有的字符串中进行替换,不得使用额外的空间,原有字符串空间保证足够大。 直接从前往后地做替换,会导致一些字符移动多次。转换思路,从后往前做替换,这样每个字 阅读全文
摘要:
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 15 最容易想到的办法是遍历整个二维数组,这样的时间复杂度是O(n),不是最优的办法。因为这个二维数组是有特点的,应该要利用这 阅读全文
摘要:
建造者模式:使用多个简单对象一步步构建成一个复杂的对象。 有时候,我们会创建一个“复杂”的对象,这个对象的由很多子对象构成,由于需求的变化,这个对象的各个部分经常面临剧烈的变化。 继续工厂模式的披萨店案例,现在披萨店要推出套餐服务,一个套餐(Meal)包含:披萨、饮料,披萨可以是芝士披萨(Chees 阅读全文
摘要:
单例模式:确保一个类只有一个实例,并提供一个全局访问点。 为什么需要单例模式? 有一些对象只需要一个,比如:线程池,对话框,注册表的对象,日志对象,打印机、显卡等设备的驱动程序对象。如果这些类有多个实例,会导致许多问题的产生。 1.第一种方式 是否延迟初始化:是 是否多线程安全:否 这种方法只适合在 阅读全文
摘要:
工厂方法模式定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。(注:“决定”不是指模式允许子类本身在运行时做决定,而是指在编写创建者类时,不需要知道实际创建的产品是哪一个。选择了使用哪个子类,自然就决定了实际创建的产品是什么) 假设我们要开一间披萨店, 阅读全文