Badges
Certifications
Work Experience
Software Engineer
GetFresh•  March 2023 - July 2023
اØمد صلاØ: *active_trader #include <stdio.h> #include <string.h> #include <stdlib.h> int compare(const char a, const char b) { return strcmp(*a, *b); } char mostActive(int customers_count, char customers, int* result_count) { qsort(customers, customers_count, sizeof(char *), compare); int size = 0; char arr = (char )malloc(size * sizeof(char *)); int count = 1; for (int i = 0; i < customers_count - 1; i++) { if (strcmp(customers[i], customers[i + 1]) == 0) { count++; continue; } if (count >= customers_count * 0.05) { arr = (char )realloc(arr, ++size * sizeof(char *)); arr[size - 1] = customers[i]; } count = 1; } if (count >= customers_count * 0.05) { arr = (char )realloc(arr, ++size * sizeof(char *)); arr[size - 1] = customers[customers_count - 1]; } *result_count = size; return arr; } **balanced_system file_partion #include <stdio.h> #include <stdlib.h> int mostBalancedPartition(int parent_count, int* parent, int files_size_count, int* files_size) { for (int i = parent_count - 1; i > 0; i--) { files_size[parent[i]] += files_size[i]; } int mindiff = files_size[0]; int diff = mindiff; for (int i = 1; i < files_size_count; i++) { diff = abs(files_size[0] - 2 * files_size[i]); mindiff = (diff < mindiff) ? diff : mindiff; } return mindiff; } ***longest_sub array #include <stdio.h> #include <stdlib.h> int longestSubarray(int arr_count, int* arr) { int x, y, max; x = y = max = 1; for (int i = 1; i < arr_count; i++) { if (arr[i - 1] == arr[i]) { x++; y++; } else if (arr[i - 1] == (arr[i] - 1)) { x = y + 1; y = 1; } else if (arr[i - 1] == (arr[i] + 1)) { y = x + 1; x = 1; } else { x = y = 1; }; max = (x > max) ? ((x > y) ? x : y) : ((max > y) ? max : y); } return max; } *max_cos of labtop #include <stdio.h> #include <stdlib.h> #include <string.h> int maxCost(int cost_count, int* cost, int labels_count, char labels, int dailyCount) { int maxcost = 0; int sumcost = 0; int count = 0; for (int i = 0; i < labels_count; i++) { if (!strcmp(labels[i], "legal")) { count++; } sumcost += cost[i]; if (count == dailyCount) { maxcost = maxcost > sumcost ? maxcost : sumcost; sumcost = 0; count = 0; } } return maxcost; } *nearly_similar_rectangles #include <stdio.h> #include <stdlib.h> // -------------------------------------- O(n log n) Using Quick sort ---------------------------------------------------// long gcd(long a, long b) // Greatest Common Divisor Function { return b > 0 ? gcd(b, a % b) : a; } long compare(const long *a, const long *b) // Compare Function To Sort 2D Array { return (*a - *b) ? (*a - *b) : (*(a + 1) - *(b + 1)); }; long nearlySimilarRectangles(int sides_rows, int sides_columns, long sides) { long arr[sides_rows][2]; for (int i = 0; i < sides_rows; i++) { long z = gcd(sides[i][0], sides[i][1]); arr[i][0] = sides[i][0] / z; arr[i][1] = sides[i][1] / z; } qsort(arr, sides_rows, sizeof(arr[0]), compare); long count = 1; long sum = 0; long acc = 0; for (int i = 0; i < sides_rows - 1; i++) { if (arr[i][0] == arr[i + 1][0] && arr[i][1] == arr[i + 1][1]) { count++; acc = ((count * (count - 1)) / 2); // n(n-1)/2 continue; } sum += acc; count = 1; acc = 0; } sum += acc; return sum; }; *parallel process #include <stdio.h> #include <stdlib.h> #include <string.h> long compare(long *a, long *b) { return *b - *a; } long minTime(int files_count, int* files, int numCores, int limit) { long total = 0; int n = 0; long *max = (long *)calloc(n, sizeof(long)); for (int i = 0; i < files_count; i++) { if (!(files[i] % numCores)) { max = (long *)realloc(max, ++n * sizeof(long)); max[n - 1] = files[i]; continue; } total += files[i]; } qsort(max, n, sizeof(long), compare); for (int i = 0; i < n; i++) { if (i < limit) { total += (max[i] / numCores); } else { total += max[i]; } } free(max); return total; } ****password_dicrption char * decryptPassword(char *s) { int len = strlen(s); char temp; int j = 0; int i = 0; int x = 0; char *numbers = (char *)calloc(x, sizeof(char)); for (i; i < len; i++) { if (isdigit(s[i]) && s[i] != '0') { numbers = (char *)realloc(numbers, ++x * sizeof(char)); numbers[x - 1] = s[i]; j++; continue; } if (s[i] == '*') { temp = s[i - j - 1]; s[i - j - 1] = s[i - j - 2]; s[i - j - 2] = temp; j++; } else if (s[i] == '0') { s[i - j] = numbers[(x--) - 1]; } else { s[i - j] = s[i]; } } { s[i - j] = '\0'; } free(numbers); return s; } **road_repair #include <stdio.h> #include <stdlib.h> #include <math.h> int compare(int *a, int *b) { return *b - *a; } long getMinCost(int crew_id_count, int* crew_id, int job_id_count, int* job_id) { qsort(crew_id, crew_id_count, sizeof(int), compare); qsort(job_id, job_id_count, sizeof(int), compare); long totalDistance = 0; for (int i = 0; i < crew_id_count; i++) { totalDistance += abs(crew_id[i] - job_id[i]); } return totalDistance; } **string_anagram #include <stdio.h> #include <stdlib.h> int compare(const char a, const char b) { return strcmp(*a, *b); } int compare_chars(const char *a, const char *b) { return *a - *b; } int binarySearchString(char arr, int n, char target[]) //------------ log(n) ----------// { int low = 0; int high = n - 1; int count = 0; int i = 0; while (low <= high) { i++; int mid = low + (high - low) / 2; int cmp = strcmp(arr[mid], target); if (cmp == 0) { count++; int left = mid - 1; int right = mid + 1; while (left >= 0 && strcmp(arr[left], target) == 0) { count++; left--; } while (right < n && strcmp(arr[right], target) == 0) { count++; right++; } break; } if (cmp < 0) { low = mid + 1; } else { high = mid - 1; } } return count; } int* stringAnagram(int dictionary_count, char dictionary, int query_count, char query, int* result_count) { char new_query = (char )calloc(query_count, sizeof(char *)); for (int i = 0; i < query_count; i++) { int n = strlen(query[i]); new_query[i] = (char *)calloc(n + 1, sizeof(char)); strcpy(new_query[i], query[i]); qsort(new_query[i], n, sizeof(char), compare_chars); //------------ n log(n) ----------// } char new_dec = (char )calloc(dictionary_count, sizeof(char *)); for (int i = 0; i < dictionary_count; i++) { int n = strlen(dictionary[i]); new_dec[i] = (char *)calloc(n + 1, sizeof(char)); strcpy(new_dec[i], dictionary[i]); qsort(new_dec[i], n, sizeof(char), compare_chars); //------------ n log(n) ----------// }; qsort(new_dec, dictionary_count, sizeof(char *), compare); //------------ n log(n) ----------// int *ans = (int *)calloc(query_count, sizeof(int)); for (int i = 0; i < query_count; i++) { ans[i] = binarySearchString(new_dec, dictionary_count, new_query[i]); //------------ log(n) ----------// } *result_count = query_count; return ans; } *sub_array sums #include <stdio.h> long* findSum(int numbers_count, int* numbers, int queries_rows, int queries_columns, int queries, int* result_count) { long *result = (long *)malloc(queries_rows * sizeof(long)); long a[numbers_count + 1]; long b[numbers_count + 1]; a[0] = 0; b[0] = 0; for (int i = 0; i < numbers_count; i++) { a[i + 1] = a[i] + numbers[i]; b[i + 1] = b[i] + (numbers[i] == 0); } for (int i = 0; i < queries_rows; i++) { int x = queries[i][2]; int r = queries[i][1]; int l = queries[i][0]; result[i] = a[r] - a[l - 1] + x * (b[r] - b[l - 1]); } *result_count=queries_rows; return result; } *unexpected_demand #include <stdio.h> int compare(int *a, int *b) { return *a - *b; } int filledOrders(int order_count, int* order, int k) { qsort(order, order_count, sizeof(int), compare); int filled; for (int i = 0; i < order_count; i++) { if (order[i] <= k) { filled++; k -= order[i]; } else { break; } } return filled; } **user name _changes #include <stdio.h> #include <string.h> int compare_chars(const char *a, const char *b) { return *a - *b; } char possibleChanges(int usernames_count, char usernames, int* result_count) { char result = (char *)malloc(usernames_count * sizeof(char *)); for (int i = 0; i < usernames_count; i++) { char *temp = (char *)calloc(strlen(usernames[i]) + 1, sizeof(char)); strcpy(temp, usernames[i]); qsort(temp, strlen(temp), sizeof(char), compare_chars); if (strcmp(usernames[i], temp)) { result[i] = "YES"; } else { result[i] = "NO"; } free(temp); } *result_count=usernames_count; return result; } ******vowel_supstring #include <stdio.h> #include <string.h> char* findSubstring(char* s, int k) { char *result = (char *)malloc((k + 1) * sizeof(char)); int key[256] = {}; char vowels[] = "aeiou"; for (int i = 0; i < strlen(vowels); i++) { key[vowels[i]] = 1; } int count = 0; int ans = 0; for (int i = 0; i < k; i++) { count += key[s[i]]; } int max = count; for (int i = k; i < strlen(s); i++) { count += key[s[i]]; count -= key[s[i - k]]; if (count > max) { max = count; ans = i - k + 1; } } if (max > 0) { strncpy(result, s + ans, k); result[k] = '\0'; return result; } free(result); return "Not found!"; }
Education
Menoufia University
Computer Science, BS