解算法题的方法和步骤
解算法题的方法和步骤 审题 注意题目中的条件。不要放过任何一句话。了解题目的意图。 列举参数 列举多个测试参数,可以分析哪些需要特判。 分析可能的解题方法 可以用纸绘制草图、不管好的坏的,骡子马,能解决问题的放都列出来,有助于思考。 实现代码 选择一门擅长的编程语言。 可以把退出条件写好,放在循环和递归的第一行,确保不会出现死循环。 计算时间复杂度、空间复杂度 寻找最优解...
解算法题的方法和步骤 审题 注意题目中的条件。不要放过任何一句话。了解题目的意图。 列举参数 列举多个测试参数,可以分析哪些需要特判。 分析可能的解题方法 可以用纸绘制草图、不管好的坏的,骡子马,能解决问题的放都列出来,有助于思考。 实现代码 选择一门擅长的编程语言。 可以把退出条件写好,放在循环和递归的第一行,确保不会出现死循环。 计算时间复杂度、空间复杂度 寻找最优解...
双指针的两种方式 左右双指针 盛最多水的容器 let array = [1,8,6,2,5,4,8,3,7]; let maxarea = 0, L = 0, R = array.length; while(L < R) { maxarea = Math.max(maxarea, Math.min(array[L], array[R]) * (L - R)); arra...
什么是树 例子中使用Java语言和lombok来自动实现构造函数 先了解什么是链表,链表是一个每一项都指向前一个节点或后一个节点的数组 graph TD 59(59)-->26(26) 26(26)-->13(13) 13(13)-->5(5) public class LinkList { @Setter @Getter private String...
时间复杂度和空间复杂度分析 为什么要追求时间复杂度 对数 理解复杂度先来理解一个高中数学概念对数。 16世纪到17世纪是天文、航海、工程、贸易、军事等方面的发展的重要时期,数据不能满足自然科学等方面的发展,约翰·纳皮尔(J.Napier,1550-1617)在研究天文学的过程中为了简化计算发明了对数。对数的发明是数学历史上的重大发明,对当时的自然科学等学科的发展起到了重要作用,恩格斯...
来看一段代码 var obj = (function(){ var num = 0; return { 'getNum': function(){ return ++num; } } })(); console.log(obj.getNum());// 1 console.log(obj.getNum());// 2 console.log(obj....