Leetcode题解(23)
2016-02-01 12:44
357 查看
69. Sqrt(x)
题目
分析,题目实现求一个int数的平方根,最暴力的算法就是逐个遍历,从1开始到x,判断是否有一个数i,其中满足i*i<=x,并且(i+1)*(i+1)>x;这个算法发虽然简单,但是效率不高。其实,按照暴力算法的思想,我们可以联想到在一个已经排好序的数组中查找一个数,该数正好满足上面的条件,因此可以采用二分查找的思想。代码如下:
class Solution { public: int mySqrt(int x) { int a[10]={0,1,1,1,2,2,2,2,2,3}; if(x<=9) return a[x]; unsigned long long left=1,right=x; unsigned long long middle= (left + right)>>1; while(left<=right) { middle = (left + right)>>1; if(middle * middle <x) { left = middle+1; } else if(middle * middle > x) { right = middle - 1; } else return middle; } if(middle * middle > x) middle--; //if(middle * middle < x) // middle++; return middle; } };
------------------------------------------------------------------------分割线--------------------------------------------------------------------------
70. Climbing Stairs
题目
分析:费波拉契数列
代码如下:
class Solution { public: int climbStairs(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n <= 2) { return n; } else { int* step = new int ; step[0] = 1; step[1] = 2; for(int i = 2; i < n; i++) { step[i] = step[i-1] + step[i-2]; } return step[n-1]; } } };
-------------------------------------------------------------------------------分割线----------------------------------------------------------------
71. Simplify Path
提示:简单的字符串操作,其基本思想是将path按照'\'进行截取,并将截取后的字符串压栈。
代码如下:
class Solution { public: string simplifyPath(string path) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<string> s; string str; for(int i = 0; i < path.size(); i++) { if (path[i] == '/') { if (str == "..") { if (!s.empty()) s.pop(); } else if (str != "." && str != "") { s.push(str); } str = ""; } else { str += path[i]; } } if (str == "..") { if (!s.empty()) s.pop(); } else if (str != "." && str != "") s.push(str); if (s.empty()) return "/"; string ret; while(!s.empty()) { ret = "/" + s.top() + ret; s.pop(); } return ret; } };
相关文章推荐
- 利用POI实现Word和 Html互转(可以实现在线预览)
- 自动化的那些不为人知的事
- Espresso 自动化测试(一)
- 贪心 3
- Tomcat中如何配置首页面,虚拟目录。
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
- Java程序员面试题集(86-115)
- wiki简介
- 广东省信息安全测评中心实习面试
- 有关类的操作
- TabHost详解
- C++引用与指针的比较
- android的组件、Intent及设计思想
- 多线程(二)线程的安全隐患
- c++特性:auto
- seajs兼容ie8
- 8623龙龙