当前位置:网站首页>611. Number of effective triangles
611. Number of effective triangles
2022-07-05 07:24:00 【BugMaker-shen】

611. The number of effective triangles

here n u m s [ l ] + n u m s [ m i d ] > n u m s [ r ] nums[l] + nums[mid] > nums[r] nums[l]+nums[mid]>nums[r], l l l take [ l , m i d − 1 ] [l,mid-1] [l,mid−1] Any number in satisfies the condition , There are a n s + = ( m i d − l ) ans += (mid - l) ans+=(mid−l)
Our current triple (2,6,7) The conditions are satisfied , Due to the inequality on the right nums[r] Fix , What we need to do is to adjust the size of the left side of the inequality , Try to satisfy the inequality
Because we let l l l take [ l , m i d − 1 ] [l,mid-1] [l,mid−1] Any number within is an attempt to make the left side of the inequality larger ( Still meet the conditions ), We should now make the left side of the inequality smaller , Continue to check whether the triangle condition is met , That is to move to the left mid, Continue looking for triples

When the conditions are not met , The sum of two small numbers is too small , To make the left side of the inequality larger , There is only one choice : To the right l l l Take a larger number
class Solution {
public:
int triangleNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), less<int>());
int n = nums.size();
int ans = 0;
// Fix the maximum number in each cycle
for (int r = n - 1; r >= 2; r--){
int l = 0;
int mid = r - 1;
while(l < mid){
if(nums[l] + nums[mid] > nums[r]){
ans += (mid - l);
// mid It's from r-1 At the beginning ,mid The initial value is large , Now the triangle condition is satisfied , You need to find the number that meets the triangle condition among the smaller numbers
mid--;
}else{
// The sum of two small numbers is too small
l++;
}
}
}
return ans;
}
};
Then we can fix the minimum value , use mid and r Looking for triples ?
In this case , Triangle condition is not satisfied , The sum of two small numbers is too small , We can adjust to the right m i d mid mid Give Way n u m s [ l ] + n u m s [ m i d ] nums[l]+nums[mid] nums[l]+nums[mid] It's worth more , Or left adjustment r r r, Give Way n u m s [ r ] nums[r] nums[r] It's worth less , To satisfy the triangle inequality . This operation is more difficult :
Let's adjust to the right mid,mid Point to 3, We will miss (2,2,3) This combination ; To the left r,r Point to 3, We will miss (2,3,4) This combination
So we should put two pointers for searching triples on the same side of the inequality , When triangle inequality is not satisfied, there is only one choice
边栏推荐
- Tshydro tool
- [framework] multi learner
- [software testing] 02 -- software defect management
- DelayQueue延迟队列的使用和场景
- Database SQL practice 3. Find the current salary details of the current leaders of each department and their corresponding department number Dept_ no
- 611. 有效三角形的个数
- [untitled]
- Unity UGUI不同的UI面板或者UI之间如何进行坐标匹配和变换
- Target detection series - detailed explanation of the principle of fast r-cnn
- Simple use of timeunit
猜你喜欢

DelayQueue延迟队列的使用和场景

Rough notes of C language (2) -- constants

1290_ Implementation analysis of prvtaskistasksuspended() interface in FreeRTOS

行测--资料分析--fb--高照老师

【无标题】

Altimeter data knowledge point 2

Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)

并查集理论讲解和代码实现

Intelligent target detection 59 -- detailed explanation of pytoch focal loss and its implementation in yolov4

【Node】nvm 版本管理工具
随机推荐
IPage can display data normally, but total is always equal to 0
The SQL implementation has multiple records with the same ID, and the latest one is taken
[idea] efficient plug-in save actions to improve your work efficiency
docker安装mysql并使用navicat连接
Using GEE plug-in in QGIS
Idea to view the source code of jar package and some shortcut keys (necessary for reading the source code)
Rough notes of C language (2) -- constants
How to deal with excessive memory occupation of idea and Google browser
iNFTnews | 喝茶送虚拟股票?浅析奈雪的茶“发币”
When jupyter notebook is encountered, erroe appears in the name and is not output after running, but an empty line of code is added downward, and [] is empty
Simple operation of nixie tube (keil5)
Typescript get timestamp
Concurrent programming - how to interrupt / stop a running thread?
Unity ugui how to match and transform coordinates between different UI panels or uis
D2L installation
DelayQueue延迟队列的使用和场景
The golang timer uses the stepped pit: the timer is executed once a day
[node] NVM version management tool
Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
U-Boot初始化及工作流程分析