摘要: 题目:给定一个数组,找出其中和为0的所有4个数组合,每个组合内的4个数非递降。解法:①先排序,然后利用4个指针,前两个遍历,后两个在第二个指针之后的部分里夹逼,时间O(N3)。②或者利用一个哈希表先保存每两个数的和,然后类似于查找两个数的和等于给定值的过程。代码:① 1 class Solution... 阅读全文
posted @ 2014-06-03 23:26 阿杰的专栏 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个数组,和一个指定的值,找出数组中3个数,它的和最接近这个指定值,并返回这个和。解法:和上一题找3个数的和为0一样,先排序再遍历,这一次不需要记录路径。代码: 1 class Solution { 2 public: 3 int threeSumClosest(vector &n... 阅读全文
posted @ 2014-06-03 23:12 阿杰的专栏 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个数组,找出其中和为0的所有3个数的组合。每个组合的3个数都是非递降的。解法:先排序再遍历,设置3个指针,第一个依次遍历,第二三个在第一个指针后面的部分里,左右夹逼查找和为第一个数的相反数的组合。时间O(N2)。代码: 1 class Solution { 2 public: 3 ... 阅读全文
posted @ 2014-06-03 23:05 阿杰的专栏 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一系列的字符串,找出这些字符串的最长公共前缀。解法:暴力法,依次比较每个字符串的每个字符,碰到第一个不同的就返回之前找到的前缀。代码: 1 class Solution { 2 public: 3 string longestCommonPrefix(vector &strs) {... 阅读全文
posted @ 2014-06-03 16:33 阿杰的专栏 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题目:将罗马数字转换为整数。解法:可以参考上一篇数字转换为罗马数字的规则。代码: 1 class Solution { 2 public: 3 int sym2int(char sym) //罗马数字字符与数字的对应关系 4 { 5 switch(sym) 6... 阅读全文
posted @ 2014-06-03 16:25 阿杰的专栏 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目:将整数转换为罗马数字。罗马数字规则可以参考: 维基百科-罗马数字解法:类似于进制转换,从大的基数开始,求整数对基数的商和余,来进行转换。代码: 1 class Solution { 2 public: 3 string intToRoman(int num) { 4 s... 阅读全文
posted @ 2014-06-03 16:17 阿杰的专栏 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 题目:x轴上有一些点,每个点上有一条与x轴垂直的线(线的下端就是这个点,不超出x轴),给出每条线的高度,求这些线与x轴组成的最大面积。解法:贪心策略,维持两个指针,分别指向第一个和最后一个元素,对于其中小的一个,它所能围成的最大面积就是到另一个元素之间,所以小的一个要往中间走一步。代码: 1 cla... 阅读全文
posted @ 2014-06-03 12:28 阿杰的专栏 阅读(121) 评论(0) 推荐(0) 编辑