簡體   English   中英

如何在 Dart 或 Java 中找到給定數組范圍內的最小缺失數

[英]How to find smallest missing number in range with given array in Dart or Java

想象一下,你有一個從 1 到 6 的范圍和數組 arr = [1,2,3] 如何編寫好的算法,其中 function 將根據數組中的數據返回此范圍內可能的最小缺失數,這意味着:

input: arr[1, 2, 3]
output: 4 is smallest missing

或者

input: arr[2, 3, 4]
output: 1 is smallest missing
  • 如果沒有缺失的數字 function 可以給 output 7,沒關系。
  • 如果數組以某種方式為空,您可能會返回 1。

我盡力使用來自www.geeksforgeeks.com的一些代碼,但這對我沒有幫助。 如果您在 Java 中編寫代碼也沒關系,但 Dart 是我正在研究的語言

非常感謝您提前提供幫助!

簡化使用循環

void main() {
  //passing empty list
  print(smallestMissingNumber([]));
  //missing 3
  print(smallestMissingNumber([1,2,4,5,6,7,8]));
  //no missing element
  print(smallestMissingNumber([1,2,3,4,5,6]));
}

int smallestMissingNumber(List<int> list){
  int i = 1;
  for(; i<= list.length; i++){
    if(!list.contains(i)){
      break;
    }
  }
  return i;
}

Output:

1
3
7

偽代碼 -> 轉換為 java

Create a range array from [1,2,3,4,5,6].
Fetch your input array [2,3,4] whatever    
Iterate you range array and check if the number exists in input array.
First missing number is the smallest number.
void main(List<String> args) {
  final universe = List<int>.generate(10, (i) => i + 1);
  final input = [1,3,6];
  var minMissing = universe.toSet().difference(input.toSet()).reduce((cur, next) => cur < next ? cur : next);
  print(minMissing);
}

結果:

2

你可以嘗試這樣的事情。

Arrays.sort(arr);
int smallestMissing =-1;
for(int i=0;i<arr.length;i++){
   if(arr[i]!=i+1){
      smallestMissing = i+1;
      break;
   }
}
if(smallestMissing==-1){
   smallestMissing = arr.length;
}

暫無
暫無

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

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