汉诺塔问题

在经典汉诺塔问题中,有  3  根柱子及  N  个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:        (1)  每次只能移动一个盘子;        (2)  盘子只能从柱子

#leetcode   #算法   #简单   #汉诺塔  

最小移动次数使数组元素相等

给定一个长度为  n  的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使  n  -  1  个元素增加  1。示例:        输入:  [1,2,3]        输出:  3        解释:  只需要3次移动(注意每次移动会增加两个元素的值):         

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

另一个树的子树

给定两个非空二叉树  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   #死锁   #简单   #多线程  

查找常用字符

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

#leetcode   #算法   #基础  

数组变换

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

#leetcode   #简单  

用两个栈实现队列

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

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