题目:有序数组{-9,-3,-1,1,1,3,9,9}平方之后{81,9,1,1,1,9,81,81}不重复的数字有多少,题目中3个
思路:需要2个移动指针,和一个pre指针
需要和pre比较,不相等,则res+1
左右指针分别向中间移动
int uniqueCnt(vector<int> inputs){
int left=0,right=inputs.size()-1,cnt=0;
int pre=-1;
while(left<right){
if(abs(inputs[left])>abs(inputs[right])){
if(pre!=abs(inputs[left])){
cnt++;
pre=abs(inputs[left]);
}
left++;
}else{
if(pre!=abs(inputs[right])){
cnt++;
pre=abs(inputs[right]);
}
right--;
}
}
return cnt;
}
该博客讨论了一种算法问题,即如何计算一个有序数组在对其元素平方后不重复的数字数量。算法使用了双指针技术,通过维护一个`pre`指针来跟踪前一个元素的绝对值,比较左右指针所指向元素的绝对值,并根据比较结果更新计数`cnt`。左右指针逐步向中间收敛,直到它们相遇,最后返回计数结果。
1057

被折叠的 条评论
为什么被折叠?



