这是来自Codility的Triangle问题:
给出了一个由N个整数组成的零索引数组A。
如果0≤0,则三元组(P,Q,R)为三角形。P <Q <R <N并且:A [P] + A [Q]> A [R],
A [Q] + A [R]> A [P],
A [R] + A [P]> A [Q]。编写一个函数:
Run Code Online (Sandbox Code Playgroud)int solution(vector<int> &A);如果给定一个由N个整数组成的零索引数组A,则在该数组存在三角形三元组的情况下返回1,否则返回0。
例如,给定数组A使得:
A [0] = 10,A [1] = 2,A [2] = 5,A [3] = 1,A [4] = 8,A [5] = 20三元组(0、2、4)是三角形,该函数应返回1。给定数组A,使得:
A [0] = 10,A [1] = 50,A [2] = 5,A [3] = 1
函数应返回0。假使,假设:
N为[0..100,000]范围内的整数;
数组A的每个元素都是[[2,147,483,648..2,147,483,647]范围内的整数。
这是我在C ++中的解决方案:
int solution(vector<int> &A) {
if(A.size()<3) return 0;
sort(A.begin(), …Run Code Online (Sandbox Code Playgroud)