摘要: 1 /*思路:为了提高实践效率,不对每一个数都判断它是不是丑数直至找到第N个丑数 2 用实践换空间,创建一个数组对已有的丑数进行排序,下一个丑数是由前面的丑数乘2,乘3或乘5得到的 3 分别找到第一个大于当前最大丑数的数,比较三者的最小值,最小值则为我们要找的下一个丑数 4 注意:不是每次都从数组的第一个元素开始*2 *3 *5 我们要分别记录三个索引值,这三个索引值所对应的m2,m3,... 阅读全文
posted @ 2018-02-12 11:10 大熊好好写代码 阅读(244) 评论(0) 推荐(0) 编辑
摘要: /** 题目:最长不含重复字符的子字符串* 解法:动态规划* 定义函数f(i)表示以第i个字符结尾的包含当前字符的不含重复字符的子字符串的最长长度* 如果当前的第i个字符没有出现过,那么f(i)=f(i-1)+1,如果已经出现过,设当前元素与上次出现的距离为d,如果d小于等于* f(i-1),说明上次出现的字符出现在f(i-1)对应的最长字符串之中,f(i)=d;如果d大于f(i-1),则f(i)... 阅读全文
posted @ 2018-02-11 17:59 大熊好好写代码 阅读(159) 评论(0) 推荐(0) 编辑
摘要: //把数字转化成字符串/** 思路:以12258为例,如果从左往右递归,会造成重复计算子问题,我们从右往左计算,创建一个辅助数组,数组的值保存的是* 从当前下标的元素到数组末尾元素这一段子字符串有多少种翻译方法,数组的第i个元素值与数组的第i+1个值和第i+2个值有关* f(i)=f(i+1)+g(i,i+1)*f(i+2),其中g(i,i+1)的值和字符串中第i和第i+1个元素组合是否处于[10... 阅读全文
posted @ 2018-02-11 15:38 大熊好好写代码 阅读(283) 评论(0) 推荐(0) 编辑
摘要: //获取礼物的最大值,此题是典型的动态规划问题//思路:1.设到达下标为(i,j)的元素所能拿到的最大总和为f(i,j),那么次f(i,j)只和到达它上面元素的总和f(i-1,j)和//到达它左边元素的总和f(i,j-1)有关 f(i,j)=max[f(i-1,j),f(i,j-1)]+arr[i,j];设一个一维数组,数组的前j个数组分别是//f(i,0),f(i,1)...f(i,j-1)... 阅读全文
posted @ 2018-02-11 14:03 大熊好好写代码 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目:详见剑指offer面试题12 思路:这是回溯算法的典型例子 首先,在矩阵中任选一个格子作为路径的起点。如果路径上的第i个字符不是ch,那么这个格子不可能处在路径上的第i个位置。如果路径上的第i个字符正好是ch,那么往相邻的格子寻找路径上的第i+1个字符。除在矩阵边界上的格子之外,其他格子都有4 阅读全文
posted @ 2018-01-19 18:58 大熊好好写代码 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 题目:输入递增数组的一个旋转,输出旋转数组的最小元素。 /* 解题思路: 1.本题中,最小的元素是被旋转部分数组的第一个元素;采用二分法,当中间值小于数组末尾元素时,说明此中间值处于被旋转 部分数组当中,最小值在左边包含中间值的数组中,high=mid;当中间值大于数组末尾元素时,说明此中间值处于前 阅读全文
posted @ 2018-01-19 14:49 大熊好好写代码 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目:用两个栈来实现一个队列 思路:根据栈和队列的特点可知:栈是后进先出的,队列是先进先出的,用两个栈,栈1用于入队,栈2用于出队。入队时向栈1进栈, 出队时:如果栈1和栈2都为空,主动捕获队列元素为空异常。如果栈2不为空,直接从栈2中弹出元素,否则将栈1中所有的元素依次 弹入栈2.最后弹出栈2栈顶 阅读全文
posted @ 2018-01-19 13:54 大熊好好写代码 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题目:输入二叉树的某一个结点,查找出此二叉树当前结点中序遍历输出的下一结点,每一个结点不仅包含左指针和右指针,还 包含指向父结点的指针。 思路:分一下四种情况 1.当前结点为空,则下一输出结点为空 2.当前结点有右子树,根据中序遍历的特点可知,下一输出结点为当前结点的右子树的最左子节点。 3.当前结 阅读全文
posted @ 2018-01-18 13:07 大熊好好写代码 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目:输入某二叉树的前序遍历和中序遍历的结果,假设结果中不包含重复元素,请重建该二叉树。 思路:前序:访问顺序:根-->左子树-->右子树 后序:访问顺序:左子树-->根-->右子树 1.要想重建一个序列的二叉树,就要知道每序列中每一个结点的左子树和右子树。 2.前序序列的第一个结点值就是根结点的值 阅读全文
posted @ 2018-01-17 23:00 大熊好好写代码 阅读(570) 评论(0) 推荐(0) 编辑
摘要: % 题目:实现一个函数,将字符串中的空格替换成"%20"。 思路:直接遍历每遇一个空格,此空格后的所有元素要总体往后移,时间效率较低。现在遍历一次字符串,求出此字符串中的空格数,由此计算出 替换之后字符串的总长度,然后定义两个指针p1和p2,p1指向原始字符串末尾,p2指向替换之后的字符串的末尾。此 阅读全文
posted @ 2018-01-17 22:17 大熊好好写代码 阅读(158) 评论(0) 推荐(0) 编辑