数组--将两个有序数组a,b合并成新的有序数组c
有两个有序的数组a,b;长度分别是m,n;请使用时间复杂度为m+n的算法,将此两个数组重新合并构成一个有序数组c.
1 static void Main(string[] args) 2 { 3 int[] a = { 1, 3, 5, 6, 6, 7, 14 }; 4 int[] b = { 2, 3, 4, 6, 7, 13, 18, 20 }; 5 6 var cLength = a.Length + b.Length; 7 int[] c = new int[cLength]; 8 int i = 0, j = 0, k = 0; 9 10 for (i = 0, j = 0, k = 0; (i < a.Length || j < b.Length) && k < (a.Length + b.Length); i++, j++, k++) 11 { 12 if (i>=a.Length) 13 { 14 c[k] = b[j]; 15 continue; 16 } 17 18 if (j >= b.Length) 19 { 20 c[k] = a[i]; 21 continue; 22 } 23 24 if (a[i] > b[j]) 25 { 26 c[k] = b[j]; 27 i--; 28 } 29 else 30 { 31 c[k] =a[i]; 32 j--; 33 } 34 } 35 36 for (int l = 0; l < c.Length; l++) 37 { 38 System.Console.Write(c[l]); 39 } 40 41 System.Console.Read(); 42 }
这是,不久去某公司遇到的一个问题,其实这个理解题目的意思,仔细想想逻辑,还是做出来的。可能刚开始做的时候有点紧张,最怕笔试题的公司,
太久没拿笔写字了,看着歪歪扭扭的字迹更是难受,写的乱七八糟!还好,向面试官表达清楚了逻辑!
看来需要静下心来,练练字了! 马上要春节了,新春快乐!希望自己在2015年生活和事业上能更进一步。
fighting for me,my dear darling,my family, ~O(∩_∩)O~。