需求:兩個等長數組 a、b,合並為新數組 c,規則:偶數索引取 a[i] 再取 b[m-1-i],奇數索引取 b[m-1-i] 再取 a[i]。
List MergeAlternate(int[] a, int[] b) {
int m = a.Length;
var c = new List(2 * m);
for (int i = 0; i < m; i++) {
if (i % 2 == 0) {
c.Add(a[i]);
c.Add(b[m - 1 - i]);
} else {
c.Add(b[m - 1 - i]);
c.Add(a[i]);
}
}
return c;
}
int[] a = {1, 2, 3, 4};
int[] b = {10, 20, 30, 40};
// m=4
// i=0 (even): a[0]=1, b[3]=40
// i=1 (odd): b[2]=30, a[1]=2
// i=2 (even): a[2]=3, b[1]=20
// i=3 (odd): b[0]=10, a[3]=4
// 結果: [1, 40, 30, 2, 3, 20, 10, 4]
var c = Enumerable.Range(0, m)
.SelectMany(i => i % 2 == 0
? new[]{a[i], b[m-1-i]}
: new[]{b[m-1-i], a[i]})
.ToList();
List MergeAlternate(T[] a, T[] b) {
// 同樣邏輯,類型參數化
}
掌握索引映射與奇偶分支,可靈活應對各類數組交織合並需求。