fix my medium algo

This commit is contained in:
Maoake Teriierooiterai
2026-01-12 11:35:23 +01:00
parent 376f457f7d
commit 69dc80e498
2 changed files with 22 additions and 11 deletions

View File

@@ -16,11 +16,14 @@ int get_first_lower(t_stack *first)
{ {
t_stack *tmp; t_stack *tmp;
int lower; int lower;
int pass;
tmp = first; tmp = first;
lower = tmp->value; lower = tmp->value;
while (tmp->next != first) pass = 1;
while (tmp != first || pass == 1)
{ {
pass = 0;
if (lower > tmp->value) if (lower > tmp->value)
lower = tmp->value; lower = tmp->value;
tmp = tmp->next; tmp = tmp->next;
@@ -85,17 +88,18 @@ int get_number_in_range(int max_range, t_stack *a, int range)
int nb_in; int nb_in;
t_stack *tmp; t_stack *tmp;
t_stack *first; t_stack *first;
int pass;
nb_in = 0; nb_in = 0;
tmp = a; tmp = a;
pass = 1;
first = tmp; first = tmp;
while (tmp->next != first) while (tmp != first || pass == 1)
{ {
pass = 0;
if (in_range(tmp->value, max_range, range)) if (in_range(tmp->value, max_range, range))
nb_in++; nb_in++;
tmp = tmp->next; tmp = tmp->next;
} }
if (in_range(tmp->value, max_range, range))
nb_in++;
return (nb_in); return (nb_in);
} }

View File

@@ -16,12 +16,15 @@
static int get_max_number(t_stack *first) static int get_max_number(t_stack *first)
{ {
int max; int max;
int pass;
t_stack *a; t_stack *a;
a = first; a = first;
max = a->value; max = a->value;
while (a->next != first) pass = 1;
while (a!= first || pass == 1)
{ {
pass = 0;
if (max < a->value) if (max < a->value)
max = a->value; max = a->value;
a = a->next; a = a->next;
@@ -33,13 +36,17 @@ static int get_min_number(t_stack *first)
{ {
int min; int min;
t_stack *a; t_stack *a;
int pass;
a = first; a = first;
min = a->value; min = a->value;
while (a->next != first) pass = 1;
while (a != first || pass == 1)
{ {
pass = 0;
if (min > a->value) if (min > a->value)
min = a->value; min = a->value;
a = a->next; a = a->next;
} }
return (min); return (min);
@@ -59,16 +66,16 @@ static int my_sqrt(int nb)
int range_bucket(t_stack *first) int range_bucket(t_stack *first)
{ {
int len; int len;
int diff; long diff;
int sqrt; int sqrt;
len = stack_len(first); len = stack_len(first);
diff = get_max_number(first) - get_min_number(first); diff = (long)get_max_number(first) - (long)get_min_number(first);
sqrt = my_sqrt(len); sqrt = my_sqrt(len);
if (diff / sqrt < 2) if (diff / sqrt < 2)
{ {
return (get_max_number(first)); return (get_max_number(first));
} }
return ((get_max_number(first) - get_min_number(first)) / my_sqrt(len)); return (diff / my_sqrt(len));
} }