[codility]AbsDistinct
来源:互联网 发布:乐乎青年城市社区吧 编辑:程序博客网 时间:2024/05/02 04:26
A non-empty zero-indexed array A consisting of N numbers is given. The array is sorted in non-decreasing order. The absolute distinct count of this array is the number of distinct absolute values among the elements of the array.
For example, consider array A such that:
A[0] = -5 A[1] = -3 A[2] = -1 A[3] = 0 A[4] = 3 A[5] = 6
The absolute distinct count of this array is 5, because there are 5 distinct absolute values among the elements of this array, namely 0, 1, 3, 5 and 6.
Write a function:
int solution(vector<int> &A);
that, given a non-empty zero-indexed array A consisting of N numbers, returns absolute distinct count of array A.
For example, given array A such that:
A[0] = -5 A[1] = -3 A[2] = -1 A[3] = 0 A[4] = 3 A[5] = 6
the function should return 5, as explained above.
Assume that:
- N is an integer within the range [1..100,000];
- each element of array A is an integer within the range [−2,147,483,648..2,147,483,647];
- array A is sorted in non-decreasing order.
Complexity:
- expected worst-case time complexity is O(N);
- expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.
// you can use includes, for example:// #include <algorithm>#include <cstdlib>// you can write to stdout for debugging purposes, e.g.// cout << "this is a debug message" << endl;int solution(vector<int> &A) { // write your code in C++11 long long prev_absolute_value = -1; int ret = 0; for(int i = 0, j = A.size()-1; i <= j; ) { //avoid arith overflow, abs(INT_MIN) overflow long long left_absolute_value = llabs(A[i]); long long right_absolute_value = llabs(A[j]); if(left_absolute_value > right_absolute_value) { if(left_absolute_value != prev_absolute_value) { ret++; prev_absolute_value = left_absolute_value; } i++; } else { if(right_absolute_value != prev_absolute_value) { ret++; prev_absolute_value = right_absolute_value; } j--; } } return ret;}
- [codility]AbsDistinct
- codility AbsDistinct
- codility
- codility
- Codility -- Fish
- Codility -- Brackets
- Codility -- grocery_store
- Codility -- Triangle
- [codility]Triangle
- [codility]Brackets
- [codility]Fish
- [codility]Dominator
- [codility]Equi
- [codility]equi
- [codility]MinAbsSumOfTwo
- [codility]CountMultiplicativePairs
- 【Codility】PassingCars
- [codility]MinMaxDivision
- iOS 苹果所有设备的系统、屏幕尺寸和像素
- crontab 里 % 会出错
- 第八周 项目一 (1) 实现复数类中的运算符重载 成员函数
- Android Blur效果之FastBlur
- IOS 获取年月日、星期
- [codility]AbsDistinct
- 云管理软件 ManageIQ(转)
- CentOS 更改yum源
- 图割Graph-Cut的最大流实现
- Objective-c LLVM 4.0 的新特性 NSArray支持下标访问
- 移动APP项目研发流程及版本规划
- ADT
- manpage中显示的内容,命令后面接的数字含义
- u-boot-2009.11 移植 step1