请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。
请你完成 FrontMiddleBack 类:
FrontMiddleBack() 初始化队列。
void pushFront(int val) 将 val 添加到队列的 最前面 。
void pushMiddle(int val) 将 val 添加到队列的 正中间 。
void pushBack(int val) 将 val 添加到队里的 最后面 。
int popFront() 将 最前面 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回 -1 。
int popMiddle() 将 正中间 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回 -1 。
int popBack() 将 最后面 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回 -1 。
请注意当有 两个 中间位置的时候,选择靠前面的位置进行操作。比方说:
将 6 添加到 [1, 2, 3, 4, 5] 的中间位置,结果数组为 [1, 2, **6**, 3, 4, 5] 。
从 [1, 2, **3**, 4 ...
我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。
例如:s = "LEETCODE" ,则其中 "L", "T","C","O","D" 都是唯一字符,因为它们只出现一次,所以 countUniqueChars(s) = 5 。
本题将会给你一个字符串 s ,我们需要返回 countUniqueChars(t) 的总和,其中 t 是 s 的子字符串。输入用例保证返回值为 32 位整数。
注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计 s 的所有子字符串中的唯一字符)。
示例 1:
12345输入: s = "ABC"输出: 10解释: 所有可能的子串为:"A","B","C","AB","BC" 和 "ABC"。 ...
表的加减法UNION12345SELECT product_id,product_nameFROM ProductUNIONSELECT product_id,product_nameFROM Product2
结果是两个表的并集
注意事项
作为运算对象的记录的列数必须相同,否则会发生错误
作为运算对象的记录中的列的类型必须保持一致
可以使用任何SELECT语句,但是ORDER BY只能在最后使用一次
ALL包含重复行的运算
12345SELECT product_id,product_nameFROM ProductUNION ALLSELECT product_id,product_nameFROM Product2
INTERSECT求交集
123456SELECT product_id,product_nameFROM ProductINTERSECTSELECT product_id,product_nameFROM Product2ORDER BY product_id;
EXCEPT差集
123456SELECT product_id,product_nameFROM ...
为其他对象提供一种代理以控制对这个对象的访问。
实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546// 抽象主题类class Subject {public: virtual void request() = 0;};// 具体主题类class RealSubject : public Subject {public: void request() override { // ... }};// 代理类class Proxy : public Subject {public: Proxy(Subject* subject) : subject_(subject) {} void request() override { if (checkAccess()) { subject_- ...
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活
它允许你在不改变对象自身的基础上,动态地给对象添加新的功能
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566// 抽象组件类class Component {public: virtual void operation() = 0;};// 具体组件类class ConcreteComponent : public Component {public: void operation() override { // ... }};// 抽象装饰器类class Decorator : public Component {public: Decorator(Component* componen ...
组合模式又称:对象树(Object Tree)是一种结构型设计模式,可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。
组件(Component):定义组合模式中所有对象共有的方法和属性。
叶子节点(Leaf):叶子节点对象,也是组合中没有子节点的对象。
组合节点(Composite):表示组合中的容器对象,该对象包含其他子节点。
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <iostream>#include <list>#include <memory>#include <utility>#include <cstddef> using na ...
各种函数根据用途,大致分为算数函数、字符串函数、日期函数、转换函数和聚合函数
算数函数
ABS
ROUND
MOD
字符串函数
拼接函数||
字符串长度 LENGTH
LOWER&UPPER
REPLACE
SUBSTRING
日期函数
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
EXTRACT 截取日期函数,配合TIMESTAMP使用
转换函数
CAST 类型转换
COALESCE 将NULL转换为其他值
谓词LIKE字符串的部分一致查询
先创建如图所示的列表:
前方一致查询:
123SELECT * FROM SampleLike WHERE strcol LIKE 'ddd%';
中间一致
123SELECT * FROM SampleLike WHERE strcol LIKE '%ddd%';
后方一致
123SELECT * FROM SampleLike WHERE strcol LIKE '%ddd';
下划线的前方一致:
_为任 ...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。
在C++中,可以使用类继承和接口实现来实现桥接模式。以下是一个简单的示例:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455// 实现部分接口class Implementor {public: virtual void operationImpl() = 0;};// 具体实现类Aclass ConcreteImplementorA : public Implementor {public: void operationImpl() override { // ... }};// 具体实现类Bclass ConcreteImplementorB : public Implementor {public: void operationImpl() ...