通過c語言自定義數組長度
能夠識別出多個重復的數據,將其輸出並返回下標
時間復雜度O(n^2)
使用雙重循環查找,找到直接break,注意break和continue的區別
#include<stdio.h> #include<stdlib.h> #include<windows.h> int main(void) { int *a; int n; scanf("%d",&n); a=(int*)malloc(sizeof(int)*(n)); for(int i=0;i<n;++i) scanf("%d",&a[i]); for(int i=0;i<n-1;++i) for(int j=i+1;j<n;++j) if(a[i]==a[j]) { printf("find number %d ,locate %d\n",a[i],j); break; } /* for(int i=0;i<n;++i) printf("%d ",a[i]); printf("\n"); */ system("pause"); return 0; }
之前在申請內存的時候直接用(int*)malloc(sizeof(n));當申請的內存超過10的時候會出現堆的溢出錯誤,因為申請的內存是錯誤的,無法容納大於10的數組
改為(int*)malloc(sizeof(int)*(n));之后就解決了這個問題,二維數組的動態申請也是同理。