Solution to Triangle by Codility

Posted gcczhongduan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solution to Triangle by Codility相关的知识,希望对你有一定的参考价值。

question: https://codility.com/programmers/lessons/4


we need two parts to prove our solution.

on one hand, there is no false triangular. Given the array has been sorted, if A[i]+A[i+1]>A[i+2], we can prove the existence of the triangle. for array A is sorted , we can easily confirm that A[i+2] + A[i] > A[i+1] and A[i+1]+A[i+2] >A[i]. So we just need to check this condition.

on the other hand,there is no underreporting triangular. If the inequality can hold for three out-of-order elements, to say, A[index]+A[index+m] > A[index+n], where n>m>1. because array A is sorted, we can reach that A[index+m-1]>=A[index] and A[index+n]>= A[index + m+1]; after simplification , we infer that A[index+m-1]+A[index+m] > A[index+m+1]. if we have any inequality holding for out-of-order elements, we MUST have AT LEAST an inequality holding for three consecutive elements.


some trap:

  • forget to check A[i] >0;
  • need to judge if A.size() <3; rather than left these to the condition in for loop.   because A.size() return size_t type . if A.size()==1,A.size()-2 may get a very large positive num, than lead to error.


C++ Solution

#include <algorithm>
#include <vector>
#include <map>
int solution(vector<int> &A) {
    // write your code in C++11
    if (A.size()<3)
        return 0;
    sort(A.begin(),A.end());
    for(int i=0; i< A.size()-2&& i<A.size(); i++){
        if(A[i]>0 && A[i]>A[i+2]-A[i+1])
            return 1;
    }
    return 0;
}


以上是关于Solution to Triangle by Codility的主要内容,如果未能解决你的问题,请参考以下文章

How to Solve Lonsdor K518ISE Abnormal Display by Factory Resetting

luogu P2992 [USACO10OPEN]三角形计数Triangle Counting

119. 杨辉三角 II

119. 杨辉三角 II

C++ Program to Print Alphabet Triangle

[Solution] 821. Shortest Distance to a Character