問題1、列印1到最大的n位數
//解法
一、直接求出n位數的最大值,然後直接從1開始列印
//缺陷:可能會溢位,大數問題
void print1tomax(int n)
for(int i=1;icout
<" ";
}cout
二、在字串上模擬數字加法
void print1tomax(int n)
}bool increment(char *number)
if(nsum>=10)
}else
}return isoverflow;
}void printnumber(char *number)
//解法
三、可以發現這就是n個0--9的全排列,只是0開頭不列印出來。
void printnumber(int *number,int len)
cout
<< " ";
}void permutationall(int a, int len, int index)
for (int i = 0; i < 10; i++)
}void print(int n)
}
問題2、調整陣列順序使奇數字於偶數前面
void changepos(int a,int n)
}
問題3、尋找最小的k個數
//解法
一、可以基於partition函式來解決,但是會修改原來的陣列
int partition(int a,int low,int high)
void findleastknum(int a,int n,int k)else
}for(int i=0;icout
<" ";
cout
二、特別適合處理海量資料
void findleastknum(int a, int n, int k)
}for (auto c : intset)
cout
<< c << " ";
cout
<< endl;
}
問題4、把陣列排成最小的數。
例如給定陣列,則列印這3個數字能排成的最小數字321323
int compare(const
void *str1, const
void *str2)
int main(void)
; qsort(str, 3, sizeof(char*),compare);
for (int i=0;i<3;i++)
cout
<< str[i]<"pause");
return
0;}
陣列相關演算法
1.尋找最小的k個數 有n個整數,請找出其中最小的k個數,要求時間複雜度盡可能低。全部排序。使用快速排序演算法排序之後並且輸出最小的k個數,時間複雜度為o nlogn def quick sort array,left,right if left right return low left high...
陣列求和相關演算法
問題1 輸入乙個陣列,在陣列中查詢兩個數,使得它們的和正好是target void findtwosum int a,int n,int target 問題2 輸入整數sum,找出所有和為sum的連續整數序列,至少包含兩個。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所有結果列印...
陣列的相關演算法
目錄 1 陣列找最值 2 陣列統計 求總和 均值 統計偶數個數等 3 反轉 4 複製 5 查詢 6 排序 1 陣列中找最值 思路 1 先假設第乙個元素最大 最小 2 然後用max min與後面的元素一一比較 示例 int arr 找最大值 int max arr 0 for int i 1 imax...