簡體   English   中英

給定數組中的最小奇數

[英]Smallest odd number in given array

這段代碼應該在給定數組中找到最小的奇數並將其存儲在min中,但是當我嘗試打印min時,它總是打印0

int smallestodd(int x[5]){
  int j;
  int k[5];
  int p = 0;
  int r = 0;

  for(int h =0; h<5;h++){

    j = x[h] % 2;
    if(j == 1){
      int temp =x[h];
      k[p] =temp;
      p++;
    }
  }

  int min = k[0];


  while(k[r] !=0){
    if(k[r] < min ){
      min = k[r];
      r++;
    }
  }

  return min;
}

假設數組中有一個奇數 - 讓我們說嘗試在偶數(或沒有數字)的數組中找到最小奇數是UB :)

index = 0;
while (arr[index] % 2 == 0) index++; // skip even numbers
min = arr[index++]; // first odd number
while (index < length) {
    if (arr[index] % 2) {
        if (arr[index] < min) min = arr[index];
    }
    index++;
}

此代碼避免搜索溢出並在找到時返回1,如果數組只有偶數,則返回0。

int getMinOdd(int arr[], int length, int *value) {
    int found = 0;
    for(int idx=0; idx < length; idx++) {
        if (arr[idx] % 2) {
            if (!found || *value > arr[idx]) {
                *value = arr[idx];
            }
            found = 1;
        }
    }
    return found;
}

實際上這很簡單。 您需要檢查陣列上的2個條件。

int smallestOdd(int arr[]){
    int min = 99999; //Some very large number
    for(int i = 0; i < (length of your array); i++) {
        if(arr[i]%2 != 0 && arr[i] < min) { //Check if number is odd and less than the current minimum value
            min = arr[i];
        }
    }
    return min;
}

首先使用此 using 語句:

使用系統 Linq;

Console.WriteLine(myArray.Where(i => i%2 == 1).Min());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM