Skip to content

Commit 8a9ad6f

Browse files
Find minimum in rotated sorted array
Signed-off-by: begeekmyfriend <[email protected]>
1 parent 36422d1 commit 8a9ad6f

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
gcc -O2 -o test minimum.c
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <limits.h>
4+
5+
static int findMin(int* nums, int numsSize)
6+
{
7+
int lo = 0;
8+
int hi = numsSize - 1;
9+
int min = INT_MAX;
10+
while (lo <= hi) {
11+
int mid = lo + (hi - lo) / 2;
12+
min = min < nums[mid] ? min : nums[mid];
13+
if (nums[mid] > nums[hi]) {
14+
lo = mid + 1;
15+
} else {
16+
hi = mid - 1;
17+
}
18+
}
19+
return min;
20+
}
21+
22+
int main(int argc, char **argv)
23+
{
24+
int i, count = argc - 1;
25+
int *nums = malloc(count * sizeof(int));
26+
for (i = 0; i < count; i++) {
27+
nums[i] = atoi(argv[i + 1]);
28+
}
29+
printf("%d\n", findMin(nums, count));
30+
return 0;
31+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
gcc -O2 -o test minimum.c
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
static int findMin(int* nums, int numsSize)
5+
{
6+
if (numsSize == 1) {
7+
return nums[0];
8+
}
9+
int i, j;
10+
for (i = 1; i < numsSize; i++) {
11+
if (nums[i] < nums[i - 1]) {
12+
return nums[i];
13+
}
14+
}
15+
return nums[0];
16+
}
17+
18+
int main(int argc, char **argv)
19+
{
20+
int i, count = argc - 1;
21+
int *nums = malloc(count * sizeof(int));
22+
for (i = 0; i < count; i++) {
23+
nums[i] = atoi(argv[i + 1]);
24+
}
25+
printf("%d\n", findMin(nums, count));
26+
return 0;
27+
}

0 commit comments

Comments
 (0)