classSolution{ functriangleNumber(_nums: [Int]) -> Int { if nums.count <3 { return0 } var sortnum = nums sortnum.sort() let len = nums.count -1 var left =0 var right =1 var count =0 for i in2... len { right = i -1 left =0 while left < right { if sortnum[left] + sortnum[right] > sortnum[i]{ count += right - left right -=1 } else { left +=1 } } } return count } }
classSolution{ publicinttriangleNumber(int[] nums){ int len = nums.length; if(len < 3) {return0;} Arrays.sort(nums); int res = 0; int a =0,b=1,c=2; while (b!=len-1) { //走到最后一个下标时即全部访问完 while (a != b) { //第一条边和第二条边尚未重合 if (nums[a] + nums[b] > nums[c]) { res = res + b - a; //边界之差 break; } a += 1; //向后移动第一条边 } a = 0; //第一条边从起点开始 c += 1; //向后移动第三条边 if (c == len) { //第三条边下标在加1后等于数组长度即越界 b += 1; //向后移动第二条边 c = b + 1; //向后移动第三条边 } } return res; } }