每日一题来噜!(记负均正,旋转数组中的最小数字)

简介: 每日一题来噜!(记负均正,旋转数组中的最小数字)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int n = 0;
  int arr[1000] = { 0 };
  int sum = 0;
  int count = 0;
  int count2 = 0;
  printf("请输入你要输入的整数个数\n");
  // 检查数组越界  
  scanf("%d", &n);
  if (n > 1000) {
    printf("输入的整数个数过多,最多只能输入1000个整数。\n");
    return 1; // 返回一个非零值表示出错  
  }
    for (int i = 0; i < n; i++)
    {
      scanf("%d", &arr[i]);
      if (arr[i] < 0) {
        count++;
      }
      else if (arr[i] > 0) {
        count2++;
        sum += arr[i];
      }
    }
    // 检查是否有正数输入以避免除零错误  
    if (count2 == 0) {
      printf("没有输入正数,无法计算平均值。\n");
      return 1; // 返回一个非零值表示出错  
    }
    printf("%d %d", count, sum / count2);
    return 0;
  }

int minNumberInRotateArray(int* nums, int size ) {
    int l = 0, r = size - 1;//定义左指针l指向数组的起始位置,右指针r指向数组的末尾位置
    while (l < r && nums[r] == nums[0]) 
        r--;//如果数组的末尾元素与起始元素相同,则可能有多个旋转点。因此,我们不断地将右指针向左移动,直到它指向一个与起始元素不同的值,或者左指针与右指针相遇
    if (nums[l] <= nums[r]) 
        return nums[0];//如果经过上述步骤后,左指针的值仍然小于或等于右指针的值,这意味着整个数组可能是已经排序的(没有旋转),或者只有一个旋转点且该点的值与起始值相同。在这种情况下,我们只需返回起始元素
    while (l < r) {
        int mid = (l + r)/2;//使用二分查找策略在数组中找到旋转点。每次取数组的中点mid,并检查该点的值是否小于起始元素。
//如果nums[mid] < nums[0],这意味着mid在旋转点的右侧,因此我们将右指针移动到mid。
//否则,mid在旋转点的左侧或就是旋转点本身,我们将左指针移动到mid + 1
        if (nums[mid] < nums[0]) 
            r = mid;
        else 
            l = mid + 1;
    }
    return nums[r];
}
相关文章
|
7月前
|
Java
【剑指offer】-旋转数组的最小数字-06/67
【剑指offer】-旋转数组的最小数字-06/67
|
7月前
每日一题——旋转数组的最小数字(II)
每日一题——旋转数组的最小数字(II)
|
7月前
|
Java
每日一题《剑指offer》数组篇之旋转数组的最小数字
每日一题《剑指offer》数组篇之旋转数组的最小数字
40 0
每日一题《剑指offer》数组篇之旋转数组的最小数字
|
7月前
牛客网-旋转数组的最小数字
牛客网-旋转数组的最小数字
39 0
剑指offer-10.旋转数组最小的数字
剑指offer-10.旋转数组最小的数字
62 0
旋转数组的最小数字
旋转数组的最小数字
49 0
|
算法
剑指offer 10. 旋转数组的最小数字
剑指offer 10. 旋转数组的最小数字
56 0
|
算法 Java
旋转数组的最小数字(剑指offer 11)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。
旋转数组的最小数字(剑指offer 11)
11.旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
90 0
11.旋转数组的最小数字
旋转数组的最小数字(简单难度)
旋转数组的最小数字(简单难度)
78 0
旋转数组的最小数字(简单难度)