672. 灯泡开关 Ⅱ

现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮。在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态。

假设这 n 只灯泡被编号为 [1, 2, 3 …, n],这 4 个按钮的功能如下:

将所有灯泡的状态反转(即开变为关,关变为开)

将编号为偶数的灯泡的状态反转

将编号为奇数的灯泡的状态反转

将编号为 3k+1 的灯泡的状态反转(k = 0, 1, 2, …)

示例 1:

输入: n = 1, m = 1.

输出: 2

说明: 状态为: [开], [关]

示例 2:

输入: n = 2, m = 1.

输出: 3

说明: 状态为: [开, 关], [关, 开], [关, 关]

示例 3:

输入: n = 3, m = 1.

输出: 4

说明: 状态为: [关, 开, 关], [开, 关, 开], [关, 关, 关], [关, 开, 开].

注意: n 和 m 都属于 [0, 1000].

PS:

当n=1的时候,当m=1的时候包含全部两种状态,m=2的时候包含全部两种状态,m>2的时候包含m=1的时候的全部状态,所以返回2

当n=2的时候,当m=1的时候包含3种状态,m=2的时候包含4种状态,m=3包含全部状态,m>3的时候包含m=2的全部状态也就是全部2种状态

当n>2的时候,当m=1的时候包含7种状态,当m=2的时候包含8种状态,m=3的时候包含全部8种状态,m>3的时候包含m=2的全部状态也就是8种状态

class Solution {
public int flipLights(int n, int m) {
if(n == 0 || m == 0){
return 1;
}
if(m == 1){
return n<3 ? n+m:4;
}
else if (m == 2 ){
return n<3 ? n*m:7;
}
else{
return n<3 ? 2*n:8;
}
}
}

最新文章

  1. Qt设计师学习笔记--Sharping-Changing Dialogs
  2. 注意ArrayAdapter的Add()方法
  3. Install OE and BitBake
  4. Add Binary &lt;leetcode&gt;
  5. 白条VS花呗,快餐式消费金融成巨头新战场
  6. Hadoop作业JVM堆大小设置优化 [转]
  7. oracle 约束
  8. [BigData]关于Hadoop学习笔记第一天(PPT总结)(一)
  9. node案例
  10. ICE学习第二步-----从第一个程序了解ICE(HelloWorld)
  11. HDU 2138 How many prime numbers
  12. Ext4中内存使用技巧的一点思考
  13. (转)linux常用查看硬件设备信息命令
  14. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
  15. vue使用md5,base64方法
  16. web配置详细解释
  17. Atom+latex+中文环境
  18. Mac使用crontab来实现定时任务
  19. Python——numpy(python programming)
  20. “数学口袋精灵”App的第一个Sprint计划(总结)

热门文章

  1. 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift
  2. FOC 算法基础之欧拉公式
  3. [hdu4801]搜索
  4. input输入框直接拉起九宫格数字键盘
  5. struts2 进阶--异常捕获机制
  6. flex布局学习总结--阮一峰
  7. python3.x 基础三:字符集问题
  8. Json转化与ExtJS树(后台处理)
  9. asp.net MVC3.0 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
  10. maven开发SSH