給定兩個陣列a和b,其中陣列a幾乎是嚴格公升序排列的,幾乎的定義是只需改變其中乙個數,即可以滿足完全公升序排列
你的任務是從陣列a中找到這個數字,並從陣列b中選取乙個數並將其替換,使得陣列a是完全公升序排列的(嚴格公升序排列,即不允許相鄰兩個為相同的數)
請找出陣列b中滿足要求的最大數字,並輸出最終有序的陣列,如果不存在就輸出no
輸入描述:
共兩行,第一行是陣列a,第二行是陣列b,元素之間用空格分隔(陣列a的長度,陣列b的長度<100)
輸出描述:
共一行,為最終有序的陣列,不存在則輸出no
輸入:
1 3 7 4 10
2 1 5 8 9
輸出:
1 3 7 9 10
輸入
20 1 23
50 26 7
輸出
no
思路:
如果根據題意從a中尋找,那麼需要不僅需要挨個判斷,而且找到有不符合要求的還不知道要修改後面乙個或者前面乙個。 另外還有很多邊界條件,很難弄
但是逆向思維,將b排序,從大到小取b中每乙個元素,然後將其與b中每乙個元素替換,然後第三層迴圈判斷是不是符合嚴格公升序排列的。如果符合,跳出,不符合給她換回去
#include #include #include #include using namespace std;
int main()
while(true)
sort(b.begin(),b.end());
for(int i = b.size() - 1;i>=0;--i)
}if(flag)
return 0;
}a[j] = temp;
} }cout<<"no";
return 0;
}
公升序排列demo
資料檔案中,如果按照第一列公升序排列,當第一列相同時,第二列公升序排列 如果當第一列相同時,求出第二列的最小值 自定義型別mynewkey實現了writablecomparable的介面,該介面中有乙個compareto 方法,當對key進行比較時會呼叫該方法,而我們將其改為了我們自己定義的比較規則...
python公升序排列列表
給定list 2,9,6,45,13 使她公升序排列 第一想法是氣泡排序,乙個乙個進行比較。這恰恰不符合python簡單優雅的宗旨,還沒從面向過程轉移到物件導向的思路上轉移過來 在python中,我們不必要重複造輪子,函式方法,以及第三方庫一定要好好的利用 sort 與sorted 方法的區別 方法...
單鏈表公升序排列
網上看了很多 這裡是自己的一點思考 氣泡排序的思想很好理解,於是我想採用氣泡排序的方法,但是涉及到第二重迴圈的終止條件,思考了很久,得出以下方法。詳細 main主程式 include linklist.h int main linklist void createlistf linklist l,e...