另一个树的子树

给定两个非空二叉树  s  和  t,检验  s  中是否包含和  t  具有相同结构和节点值的子树。s  的一个子树包括  s  的一个节点和这个节点的所有子孙。s  也可以看做它自身的一棵子树。示例  1:给定的树  s: 3 / \ 4 5 / \ 1 2给定的树 

#leetcode   #算法   #二叉树   #简单   #KMP  

栈的最小值

请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:        MinStack  minStack  =  new  MinStack();        minStack.pu

#leetcode   #算法   #简单   #最小栈   #栈  

红绿灯路口

这是两条路的交叉路口。第一条路是  A  路,车辆可沿  1  号方向由北向南行驶,也可沿  2  号方向由南向北行驶。第二条路是  B  路,车辆可沿  3  号方向由西向东行驶,也可沿  4  号方向由东向西行驶。每条路在路口前都有一个红绿灯。红绿灯可以亮起红灯或绿灯。绿灯表示两个方向的车辆都可

#leetcode   #死锁   #简单   #多线程  

顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例  1:        输入:matrix  =  [[1,2,3],[4,5,6],[7,8,9]]        输出:[1,2,3,6,9,8,7,4,5]示例  2:        输入:matrix  =  [[1,2,3,

#leetcode   #算法   #中等  

查找常用字符

给定仅有小写字母组成的字符串数组  A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现  3  次,但不是  4  次,则需要在最终答案中包含该字符  3  次。你可以按任意顺序返回答案。示例  1:        输入:["bel

#leetcode   #算法   #基础  

数组变换

首先,给你一个初始数组  arr。然后,每天你都要根据前一天的数组生成一个新的数组。第  i  天所生成的数组,是由你对第  i-1  天的数组进行如下操作所得的:        假如一个元素小于它的左右邻居,那么该元素自增  1。        假如一个元素大于它的左右邻居,那么该元素自减  1。

#leetcode   #简单  

用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数  appendTail  和  deleteHead  ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead  操作返回  -1  )(话说这个示例我盯了好久才看懂)示例  1:        输入

#leetcode   #算法   #有限资源   #简单   #日常生活案例   #汉诺塔  

字符串中加粗的单词

给定一个关键词集合words  和一个字符串S,将所有  S  中出现的关键词加粗。所有在标签  <b>  和</b>中的字母都会加粗。返回的字符串需要使用尽可能少的标签,当然标签应形成有效的组合。例如,给定words  =  ["ab",  "

#leetcode   #简单  

斐波那契数列

写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:F(0)=0,  F(1) =1F(N)=F(N-1)+F(N-2),其中N>1.斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7(1000000007),如计

#leetcode   #算法   #简单   #动态规划