美文网首页
Triangle Count (Lintcode 382)

Triangle Count (Lintcode 382)

作者: stepsma | 来源:发表于2016-11-29 13:05 被阅读0次

    这道题相当于two sum 以及 two sum II 的follow up题。是two pointer类题目。而这道题的要点是。两个pointer均要在 i 的左边。这跟three sum有着方式上的区别。

    所以要记住这样的方法。当two pointer在 i 的右边讨论不出来时,想想把他们放到 i 的左边。

    int triangleCount(vector<int> &S) {
            // write your code here
            if(S.size() < 3) return 0;
            sort(S.begin(), S.end());
            int cnt = 0;
            for(int i=2; i<S.size(); i++){
                int left = 0, right = i-1;
                while(left < right){
                    if(S[left] + S[right] > S[i]){
                        cnt += right - left;
                        right--;
                    }else{
                        left++;
                    }
                }
            }
            return cnt;
        }
    

    相关文章

      网友评论

          本文标题:Triangle Count (Lintcode 382)

          本文链接:https://www.haomeiwen.com/subject/apbapttx.html