归档
leetcode第9题
- 题目:Determine whether an integer is a palindrome. Do this without extra space.
- 解析:判断一个数字是否是回文数,即如123321,98789类似的数字,首先负数不是回文数,以0结尾的非负数不是回文数,对于一般的非负数字,只需要将整个数字反转判断是否相等即可,但是一个int类型反转有可能会溢出,这里用到了一个技巧,即反转一半,如123321反转一般,剩下的为123,得到的为123,相等就是回文数字,对于12321,反转后为12,得到的是123,如何判断呢,只需要将得到的除以10就可以判断啦,若想等极为回文数,代码如下,运行时间60ms。
图相关
###1. 图的表示
- 邻接矩阵:这种表示方式存储了每一个顶点,因此大小为$o(n^2)$,对于那些稀疏矩阵来说很浪费空间。
- 邻接表:存储每一个顶点和其他顶点的关系时将其顶点按升序排列,可以快速定位至某一顶点。
STL之set,multiset
- 头文件及声明
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace std
{
template <typename T,
typename Compare = less<T>,
typename Allocator = allocator<T>>
class set;
template <typename T,
typename Compare = less<T>,
typename Allocator = allocator<T>>
class multiset;
}
leetcode第8题
题目大意是实现自己的atoi函数,即将将字符串中的数字转换为int型,如果不能转换则将其转换为0,若超过整形范围。则以最大值或最小值保存。代码如下,运行时间12ms.ret保存的是结果,sign标记第一个字符是+或-,代码首先将i定位到第一个不是空格的位置,base保存了INT_MAX/10的结果,若ret>base了,则ret10必定大于INT_MAX,若ret=base,而INT_MAX-ret10 =7,则说明当前的字符不能大于7,否则就超过了最大整数.。