1、程序存儲問題算法
一、實踐題目及問題描述數組
二、算法描述spa
這一道題其實就簡單的對輸入的各程序長度進行排序,而後在循環裏進行疊加,後經過判斷是否超過長度爲L的磁帶,若超過則將可存儲的數目輸出,若還可存儲,則循環繼續。3d
三、算法時間及空間複雜度分析(要有分析過程)blog
算法時間複雜度爲O(n),用了一個for循環依次存儲最短程序。排序
空間複雜度爲O(1),沒有申請額外的空間。字符串
2、刪數問題for循環
一、實踐題目及問題描述循環
二、算法描述程序
這一道題最主要注意的問題就是否是把最大的數刪去就好,要注意高位上的數對數值大小的影響更大。故而,該題的貪心思想是經過高位與下一位的比較,若高位的數值大於下一位,則將高位刪去,而後整個數組左移,len--。第二個要注意的即是,該題的輸入,應用字符串進行存儲,後經過b[i] = a[i]-'0';將字符串裏一個一個元素存進int型的新數組。第三個要注意的就是刪去處在高位的「0」,經過以下代碼實現:
三、算法時間及空間複雜度分析(要有分析過程)
算法時間複雜度爲O(n^3),用了三個循環分別就刪幾個數、比較、左移進行循環。
空間複雜度爲O(n),空間複雜度須要一個String字符串長度。
3、最優合併問題
一、實踐題目及問題描述
二、算法描述
這一道題要注意不僅是把輸入的待合併序列的長度進行比較,在進行m+n-1後還要再進行一次排序,以得出新的待合併序列的排序,從而獲得最優的最屢次比較次數計算和最少比較次數計算。
算法就是首先設定兩個數組存好待合併序列的長度,後對兩個數組進行升序排序。對於計算最少比較次數,其代碼實現以下:
三、算法時間及空間複雜度分析(要有分析過程)
算法時間複雜度爲O(n),用了一個for循環來進行。
空間複雜度爲O(2n),空間複雜度須要2個數組存儲。
心得體會
在愈來愈屢次的結對編成後,發現本身對各章的算法方法掌握的更爲牢固,且在分析問題方面更加的嚴謹和全面。針對貪心算法,也能更好地發現反例,而後在討論中不斷髮現最優子結構。繼續加油,好好打題的同時也多多考慮時間和空間複雜度。