#include <iostream>
using namespace std;
int get_square_n(int*a, int i, int j){
int cnt = 0;
while(i <= j){
while(i<j && (a[i]*a[i]) == (a[j]*a[j])){
i++;
// 同时操作,-2 -1 0 1 2这种情况会崩,-2和2相等,同时操作后-1和1又相等,少算一下
// j--;
}
if(a[i]*a[i]>a[j]*a[j]){
while(i<j && a[i]*a[i]==a[i+1]*a[i+1])
i++;
i++;
}else{
while(i<j && a[j]*a[j]==a[j-1]*a[j-1])
j--;
j--;
}
cout<<i<<" "<<j<<endl;
cnt++;
}
return cnt;
}
int main() {
int a[] = {-3,-3,-2,-1,0,1,2,3,5,5};
cout<<get_square_n(a, 0, 9) <<endl;
int b[] = {-3,-3,-2,-1,1,1,2,3,5,5};
cout<<get_square_n(b, 0, 9) <<endl;
return 0;
}
头条面试题-统计有序数组里平方和的数目
最新推荐文章于 2024-03-21 19:56:42 发布