Leetcode题解(23)
69. Sqrt(x)
题目
分析,题目实现求一个int数的平方根,最暴力的算法就是逐个遍历,从1开始到x,判断是否有一个数i,其中满足i*i<=x,并且(i+1)*(i+1)>x;这个算法发虽然简单,但是效率不高。其实,按照暴力算法的思想,我们可以联想到在一个已经排好序的数组中查找一个数,该数正好满足上面的条件,因此可以采用二分查找的思想。代码如下:
- class Solution {
- public:
- int mySqrt(int x) {
- int a[]={,,,,,,,,,};
- if(x<=)
- return a[x];
- unsigned long long left=,right=x;
- unsigned long long middle= (left + right)>>;
- while(left<=right)
- {
- middle = (left + right)>>;
- if(middle * middle <x)
- {
- left = middle+;
- }
- else if(middle * middle > x)
- {
- right = middle - ;
- }
- 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 <= )
- {
- return n;
- }
- else
- {
- int* step = new int[n];
- step[] = ;
- step[] = ;
- for(int i = ; i < n; i++)
- {
- step[i] = step[i-] + step[i-];
- }
- return step[n-];
- }
- }
- };
-------------------------------------------------------------------------------分割线----------------------------------------------------------------
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 = ; 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;
- }
- };
Leetcode题解(23)的更多相关文章
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...
- [LeetCode题解]23. 合并K个升序链表 | 分治 + 递归
方法一:分治 + 递归 解题思路 在21. 合并两个有序链表,我们知道如何合并两个有序链表.而本题是合并 k 个有序链表,可以通过大问题拆分成小问题解决,即把 k 个链表,拆分成 k/2 个链表组,俩 ...
- 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)
目录 描述 解法一:排序算法(不满足时间复杂度要求) Java 实现 Python 实现 复杂度分析 解法二:最小堆 思路 Java 实现 Python 实现 复杂度分析 解法三:桶排序(bucket ...
- 【LeetCode题解】7_反转整数
目录 [LeetCode题解]7_反转整数 描述 方法一 思路 Java 实现 类似的 Java 实现 Python 实现 方法二:转化为求字符串的倒序 Java 实现 Python 实现 [Leet ...
- 【LeetCode题解】349_两个数组的交集
目录 [LeetCode题解]349_两个数组的交集 描述 方法一:两个哈希表 Java 实现 类似的 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 ...
- [LeetCode 题解]: Roman to Interger
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a ro ...
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- [LeetCode 题解]: Maximum Subarray
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Find the c ...
- [LeetCode 题解]:Gas Station
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 There are ...
- [LeetCode 题解]: plusOne
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a no ...
随机推荐
- Linux Ubuntu从零开始部署web环境及项目-----搭建ssh环境(一)
linux搭建ssh环境 1,用户登录 成功输入用户名和密码后 进入Ubuntu界面 2,配置网络 参考:http://blog.csdn.net/liu782726344/article/deta ...
- HTML5基本标签的使用
第一次写这种东西,肯定存在许多不足之处,还望大家多多担待,我会继续加油的!我也是一名HTML5的初学者,只是将这几周在课堂上所听到的东西分享给大家. 下面给大家介绍一下H5! 一.<!DOCTY ...
- angular学习笔记02 angular指令大全
第一步 先要引入angular, 第二步 在 html 标签中<html ng-app> 加入ng-app(这是个必须的,不然会报错) 接下来就可以去使用angular的各种指令了. ...
- GCD之异步同步体会
前面的博文也有写到同步异步,可能是看他人的博文,自己没有实验,感觉理解不深,所以就敲了些代码比较一下串行.并行分别对应的同步.异步. 1.首先创建串行.并行线程队列 1 2 dispatch_queu ...
- 3.bootstrap-组件
1.图标 <button type="button" class="btn btn-default"> <span class="g ...
- javascript篇-----数据类型
ECMAScript中一共有6种数据类型,其中包括5种基本数据类型(Undefined,Null,Boolean,Number,String)以及一种复杂数据类型(Object).[ES6增加多了一种 ...
- 在Storyboard中为UITableView添加Header和Footer
我在这里所说的Header和Footer并不是sectionHeader和sectionFooter,而是指UITableView的tableHeaderView和tableFooterView,这两 ...
- [UWP]创建一个进度按钮
1. 前言 最近想要一个进度按钮. 传统上UWP上处理进度可以这样实现,首先是XAML,包括一个ProgressBar和一个按钮: <StackPanel Orientation="H ...
- 【转】elasticsearch的查询器query与过滤器filter的区别
很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单- 当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...
- JS类继承常用方式发展史
JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...