int main() { int a[10]={5,42,45,41,7,4,8,9,3,10}; printf("max=%d\n",max_arr(a,10)); return 0; }
void lognormalize(float *logp, int start, int length) { float m = max_arr(logp, start, length); for (int i = start; i < start + length; i++) { logp[i] = native_powr(exp(1.0f), logp[i] - m); } float p_sum = sum(logp, start, length); for (int i = start; i < start + length; i++) { logp[i] = logp[i] / p_sum; } }
int sorted_repetitions(int m, int n) { if (repetitions) free_repetitions(repetitions, count); if (!max_val) { max_val = malloc(sizeof(int) * n); int i; for (i = 0; i < n; ++i) max_val[i] = INT_MAX; } max = max_arr(max_val, n); repetitions = NULL; count = 0; gn = n; int *c = calloc(n, sizeof(int)); reps(m, n, c); free(c); return count; }
int maximumGap(vector<int>& nums) { int len = nums.size(); if(len < 2) return 0; int max_num = -32768; int min_num = 32767; for (int i = 0; i < len; i ++) { max_num = max(max_num, nums[i]); min_num = min(min_num, nums[i]); } if (max_num == min_num) return 0; int ave_gap = ceil((max_num - min_num) * 1.0 / (len - 1)); int bucket = (max_num - min_num) / ave_gap + 1; vector<int> max_arr(bucket, min_num - 1), min_arr(bucket, max_num + 1); for (int i = 0; i < len; i ++) { int idx = (nums[i] - min_num)/ave_gap; if (min_arr[idx] > nums[i]) { min_arr[idx] = nums[i]; } if (max_arr[idx] < nums[i]) { max_arr[idx] = nums[i]; } } int max_gap = 0; int cur_max = max_arr[0]; for (int i = 1; i < bucket; i ++) { if (min_arr[i] != max_num + 1) { if(max_gap < (min_arr[i] - cur_max)) { max_gap = min_arr[i] - cur_max; } cur_max = max_arr[i]; } } return max_gap; }