问题: 对于一个任意的自然数,问是否能将其拆分成2个或2个以上的连续自然数之和,写出所有的等式。 解题思路: 第一种解法是推导出数学公式,因为连续的自然数可以用等差数列Sn求和公式,判断可行性。公式推导以及证明过程: "数学解法" ; 第二种解法是直接穷举解法,不过对于较大的数字复杂度O(n^2)可 ...
分类:
其他好文 时间:
2019-01-16 19:16:54
阅读次数:
173
https://leetcode.com/tag/two-pointers/ ...
分类:
其他好文 时间:
2019-01-13 19:39:34
阅读次数:
214
非常好玩的双指针的题目,一开始的想法是转set然后直接len()调用一下解决, 时间复杂度度为O(1),且提供的是有序数列 k为慢指针,负责统计个数 x为快指针,负责遍历数组 在两者不同的时候,k前进一格,进入下一阶段,保证前k个是有序且不重复的 ...
分类:
其他好文 时间:
2019-01-12 00:29:27
阅读次数:
169
题意 "题目链接" Sol 把前一半放在左边,后一半放在右边 meet in the middle一波 统计答案的时候开始想的是hash,然而MLE了两个点 实际上只要排序之后双指针扫一遍就行了 cpp include using namespace std; const int MAXN = 7, ...
分类:
其他好文 时间:
2019-01-09 21:50:24
阅读次数:
176
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endp ...
分类:
其他好文 时间:
2018-12-31 14:43:58
阅读次数:
179
统计在一个root下的两个子树,每个子树都和前面的运算一下再加进去对于这种需要排序的运算很麻烦,所以考虑先不去同子树内点对的算出合法点对个数,然后减去每一棵子树内的合法点对(它们实际上是不合法的,相当于一个容斥) 算点对用排序+双指针即可 cpp include include include us ...
分类:
其他好文 时间:
2018-12-12 00:23:29
阅读次数:
122
题目描述:在有序数组中找出两个数,使它们的和为指定的值,然后返回这两个数在原数组中的位置。 题目分析:使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 如果两个指针指向元素的和 sum == target,那么得到要求的 ...
分类:
编程语言 时间:
2018-12-05 16:26:57
阅读次数:
175
题目描述:判断一个给定的数是否为两个数的平方和。 题目分析:使用双指针,一个数从1开始,一个数从给定数的算术平方根开始。较小的数每次累加1,较大的数每次减1。 如果两个数的平方和 sum == target,那么得到要求的结果; 如果 sum > target,移动较大的元素,使 sum 变小一些; ...
分类:
其他好文 时间:
2018-12-05 16:11:32
阅读次数:
155
描述 给定一个数字集合 S 以及一个数字 target,需要从集合中找出3个数字的和与这个 target的值最接近(绝对值最小) 样例 思路 首先排序,之后确定一个数字的前提下,再利用双指针从两端向中间扫描,求 ,其中 a,b ,c 是 集合中数字。 代码 c++ include include i ...
分类:
其他好文 时间:
2018-11-29 12:23:21
阅读次数:
195