- 博客(7)
- 收藏
- 关注
原创 leetcode-18 4Sum(kSum)
本题,与3Sum类似。 只需在3Sum的基础上再加一层循环即可。总结规律,在网上查询,发现目前比较好的办法就是以最初的2Sum为基础,将kSum逐渐降低k值,直到最终弱化为2Sum。 即:kSum->(k-1)Sum->……->4Sum->3Sum->2Sum.网上多是直接解决4Sum的解法,其算法思路固然很好,却丧失了程序的灵活性。 本人结合大家的思路,贡献一个采用递归的kSum的程序,可自
2015-04-23 16:50:15 506
原创 leetcode-16 3Sum closest
与3Sum类似。class Solution { public: void twoSum( vector<int> &num, int dex, int target, int& resdu, int& res) { int i=dex+1; int j=num.size()-1; while( i < j ) {
2015-04-22 17:30:27 456
原创 leetcode-15 3Sum
a+b+c=0可以看做a+b=-c。利用twoSum的方法。class Solution { public: //想法是,首先采用快排进行排序, //然后利用twoSum的方法,将-c当做target即可。 void quick_sort( vector<int> &s, int left, int right)//快排,首先排序 { if(left < right)
2015-04-22 15:37:57 477
原创 leetcode-1 two sum
难度:简单。注意:给的数据没有排序,思路: 首先复制一份数据temp,然后排序(此处按升序); 两个指针i和j,分别指向头和尾; 然后若temp[i]+temp[j] < target,则i++;若temp[i]+temp[j] > target,则j–; 直到temp[i]+temp[j] == target。 然后从头部开始计算temp[i]在numbers[]中的位置序号且加1(输出
2015-04-21 20:10:59 413
原创 leetcode-11 Container With Most Water
题目简单。 最简单的办法,就是从第一个开始,依次两两计算,求得最大值即可。 最简单的思路,往往也意味着是最笨的方法,很明显,这样的计算量大,果然,提交代码,超时。 for(i=0; i != num-1; ++i) { for(j=1; j != num; ++j) { max = m
2015-04-17 19:50:33 467
原创 Leetcode-12 int to Roman 整形数字转化为罗马数字
由于只是介于1~3999,所以,最多只有四位数。第一个想法就是计算出每一位数字,然后根据其权值,转化为Roman数字。需要建立四个查询表,分别对应个十百千上的数字。 缺点是需要一定的存储空间。第二个想法,酷似剥洋葱皮的办法,一点一点削减。 根据1~3999的Roman数字表示法的规律,按照逐步缩小的办法进行转换。比如,当num>=1000,就增加M,同时num减去1000,再判断……最后
2015-04-16 15:02:40 553
原创 Leetcode 13题 罗马数字转换为整形
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.查了下罗马数字的进制与表示规律。 首先是进制: Roman numerals ( 罗马数字 ) : I = 1 V = 5 X =10 L = 50 C = 100 D =
2015-04-01 22:39:38 1561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人