91. Decode Ways
2016-03-29 21:25
295 查看
//Time Limit Exceeded class Solution { public: int get_num(string &s,int i,int num) { if(num==0) return 1; if(s[i]=='0') return 0; int a=0,b=0; a=get_num(s,i+1,num-1); if(num>=2&&s[i]<'3'&&(s[i]-'0')*10+s[i+1]-'0'<=26) b=get_num(s,i+2,num-2); return a+b; } int numDecodings(string s) { return get_num(s,0,s.size()); } };
//4ms ac //这就是思路的转换吧,开始用搜索,结果时间超了,确实能够得到解,但是不符合要求。 //换一种思维,实际上并不用搜索那么复杂,把数列的特征进行分类记录就好了 //后来发现其实是一个斐波那契数列 class Solution { public: int get_num(int *d,int i,int num) { if(i>num) return 1; if(d[i]==0) return get_num(d,i+1,num); int sum=1,a=1,b=1; while(d[i++]==1) { b=sum; sum+=a; a=b; } return sum*get_num(d,i,num); } int numDecodings(string s) { if(s.size()==0) return 0; if(s[0]=='0') return 0; if(s.size()==1) return 1; int *d=new int[s.size()]; memset(d,0,sizeof(int)*s.size()); for(int i=1;i<s.size();i++) { if(s[i]=='0'&&(s[i-1]=='0'||s[i-1]>'2')) return 0; if(s[i]=='0') { d[i]=0; d[i-1]=0; } else if(s[i-1]=='1'||(s[i-1]=='2'&&s[i]<'7')) d[i]=1; } return get_num(d,1,s.size()-1); } };
相关文章推荐
- 360搜索实习生(自然语言处理/机器学习/数据挖掘工程师)在线笔试知识点总结
- tune performance
- 在Xcode中使用Git进行源码版本控制
- 设计模式:外观模式(Facade)
- ArrayList以及数组的转换的思考
- Ubuntu安装Torch
- 【9】Linux-设备驱动概述
- 机器学习实战之决策树
- Java 向Hbase表插入数据报(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac)
- eclipse 条件断点
- YJX_Driver_012_为DDK_HelloWorld添加设备例程
- Linux学习之路:变量值的删除、替代和替换
- Bear and Polynomials 639 C
- leetcode之旅(9)-Reverse Linked List
- Error:Makefile:1449:*** mixed implicit and normal rules: deprecated syntax
- docker ubuntu容器更换阿里源
- [置顶] fiddler抓包HTTPS请求
- 远程线程的注入和注出
- leetcode之旅(9)-Reverse Linked List
- leetcode之旅(9)-Reverse Linked List