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个数组存储。
心得体会
在愈来愈屡次的结对编成后,发现本身对各章的算法方法掌握的更为牢固,且在分析问题方面更加的严谨和全面。针对贪心算法,也能更好地发现反例,而后在讨论中不断发现最优子结构。继续加油,好好打题的同时也多多考虑时间和空间复杂度。