演算法題目 尋找迷失的數字。

2021-06-25 16:50:46 字數 1013 閱讀 9195

/*

題目:給定乙個無序的整數陣列,怎麼找到第乙個大於0,並且不在此陣列的整數。

比如 [1,2,0] 返回 3, [3,4,-1,1] 返回 2。最好能 o(1) 空間和 o(n) 時間。

*/#include#include//思路:

/* 陣列a[n]長度為n。

因為要求尋找的數必須大於0.

所以假定有一列數 [1...n]

那麼a[n]中的數和[1...n]有如下幾種關係

逐一查詢,看[1...n]中的數在a[n]中是否都存在。

1.[1...n]裡的元素,a[n]中都有,那麼這兩組數重合了,因此,既》0,又不屬於a[n]的數,為n+1;

2.若不重合,[1...n]中哪個元素先沒有的,答案就是此數。

但是二分查詢需要有序表。得先排序

二分查詢的話,查詢n個元素需要o(nlogn)

*///二分查詢函式

bool binserch(int x, int *a, int n)

else if(xa[i])

}if(ra[large])

}if(large!=i)

}void buildheap(int *a,int len)

void heapsort(int *a,int len)

printf("\n");

}void lookftlose(int *a,int array_len)

}printf("%d\n",array_len+1);

}//main函式

int main()

{ int i;//計數器

int n;//陣列大小

int *a;//待處理資料

int res;//儲存結果;

while(scanf("%d",&n)!=eof)

{a=(int *)malloc(n*sizeof(int));//為動態陣列a分配空間

//輸入資料

for(i=0;i

數字遊戲 尋找缺失的數字

演算法專題導航頁面 演算法專題 應用場景 數字遊戲 尋找缺失的數字 尋找兩個排序陣列 長度相等 的上中位數 題目 程式猿小明來自於乙個游牧家庭,家裡有乙個大大的牧場和成群結隊的牛羊,為了便於管理羊群,小明決定對每只綿羊進行編號標記,最終剛好用完100個號碼 1 100 小明的日常生活簡單的有點枯燥 ...

尋找輸入數字中的全數字

題目內容 如果乙個n位數剛好包含了1至n中所有數字各一次則稱它們是全數字 pandigital 的,例如四位數1324就是1至4全數字的。從鍵盤上輸入一組整數,輸出其中的全數字 import copy defpandigital nums a,e a.extend list nums e copy....

LeetCode 尋找丟失的數字

給定乙個包含 0,n 中n個數的陣列nums,找出 0,n 這個範圍內沒有出現在陣列中 的那個數字.示例 1 input nums 3,0,1 output 2 示例 2 input nums 0,1 output 2 因為有2個數字,所有數字都在 0,2 之間內.示例 3 input nums 9...