兩個陣列分別取出一個來相加,找出和最小的k個
【特別注意】:這個方法有問題,正確的方法是用堆實現,最近比較忙,沒時間寫程式碼,過一段時間補上。
/** * 兩個陣列a1和a2,大小都為k。 * 有兩個序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列, * 對於1<=i,j<=k,求k個最小的(ai+bj),要求演算法儘量高效。 */ #include <stdio.h> #define M 6 #define N 8 int a1[M] = {1,3,5,6,9,10}; int a2[M] = {2,2,3,3,5,11}; int x = 0; int y = 0; int result[N] = {0}; int min(int a, int b){ return a<b?a:b; } int main(){ int i = 0; int h = 1; int index = 0; int max_index = 5; result[index++] = a1[x]+a2[y]; while(1){ //固定x,y先前走,直到和大於a[x+1][y] h = 1; while(a1[x] + a2[y+h] <= a1[x+1] + a2[y]){ result[index++] = a1[x] + a2[y+h]; if(index == max_index) break; h++; } result[index++] = a1[x+1] + a2[y]; if(index == max_index) break; x++; //固定y,x先前走,直到和大於a[x][y+1] h = 1; while(a1[x+h] + a2[y] <= a1[x] + a2[y+1]){ result[index++] = a1[x+h] + a2[y]; if(index == max_index) break; h++; } result[index++] = a1[x] + a2[y+1]; if(index == max_index) break; y++; } printf("結果是:\n"); for(i=0;i<5;i++) printf("%d ",result[i]); return 0; }
執行結果:
相關文章
- 找到無序陣列中最小的k個數陣列
- 每日一題(一):找出兩個陣列中共有的數字每日一題陣列
- 前端面試題,寫出一個快速找出兩個陣列不同值的函式。前端面試題陣列函式
- 兩個有序陣列如何合併成一個有序陣列陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- javascript將陣列的元素每兩個一組存入一個新陣列JavaScript陣列
- 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。陣列
- 改進,從一個陣列中找出 N 個數,其和為 M 的所有可能陣列
- 【谷歌面試題】求陣列中兩個元素的最小距離谷歌面試題陣列
- [求解]陣列,分成倆個陣列,陣列值之和的相差最小。陣列
- 6-1 在一個陣列中實現兩個堆疊 (20分)陣列
- js實現從陣列中取出一個隨機項JS陣列隨機
- 每日一練(46):兩個陣列的交集陣列
- 找最小的k個數(優先佇列)佇列
- 一個陣列和另一個陣列比較,如果第一個陣列裡面有的就不新增了陣列
- 一個關於php兩個陣列compare實踐PHP陣列
- 給定一個整數陣列,找出總和最大的連續數列,並返回總和。陣列
- PHP陣列多個欄位分別排序PHP陣列排序
- 如何從陣列中隨機取出幾個值組成新的陣列?陣列隨機
- 計算兩個一維陣列的卷積陣列卷積
- 給出一個由[-100,100]之間整陣列成的陣列,求其相加和最大的連續子陣列 輸入 一個連續整陣列成的陣列 輸出 子陣列相加的最大值 樣例輸入 -......陣列
- 合併兩個有序陣列陣列
- 從陣列中找出N個數,其和為M的所有可能陣列
- 【淺出 PHP】陣列相加和陣列合並的區別PHP陣列
- 將一個陣列賦值給另外一個陣列陣列賦值
- 如何將一個陣列中的元素插入另一個陣列陣列
- Single Number 陣列中除了某個元素出現一次,其他都出現兩次,找出這個元素陣列
- 編寫一個函式,實現兩個整型陣列的合併(將兩個整型陣列a和b合併成一個從小到大有序排列的整形陣列c,並在主函式中測試)。函式陣列
- 找一個陣列中特別的數陣列
- 6.5 建立一個masked型別的陣列型別陣列
- 【遞迴打卡2】求兩個有序陣列的第K小數遞迴陣列
- 一個form兩個提交按鈕,分別提交到兩頁面ORM
- 給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。陣列
- 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用陣列
- 力扣之兩個陣列的交集力扣陣列
- 兩個有序陣列的中位數陣列
- 找到兩個陣列中的公共元素陣列
- 求一個陣列中沒有出現的最小正數陣列