![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网
gyl2016
这个作者很懒,什么都没留下…
展开
-
二维数组中的查找
原创 2017-11-11 17:54:12 · 273 阅读 · 0 评论 -
剑指offer——二叉搜索树的第k个结点
题目:给定一颗二叉搜索树,请找出其中的第k小的结点。二叉搜索树:根结点的值大于左子树中任一结点的值,小于右子树中任一结点的值。答案:二叉搜索树按照中序遍历得到的结果就是递增的序列,所以要找第k小结点,可以按照中序遍历去查找。代码如下:# 创建树的结点class Node: def __init__(self, a=0): self.val=a ...原创 2018-11-19 21:33:35 · 158 阅读 · 0 评论 -
python中处理链表时特别注意引用传递的问题
刷题刷到剑指offer第57题(删除链表(已排序)中重复的结点)时,按照自己的思路做的,发现输出结果时出现过以下问题:做题思路:链表相当于一个前后有关系的数组,于是先把此题当做删除数组中重复的元素来思考,立马想到可以借用python中的字典来统计每个数字出现的频数(这样遍历一次的时间复杂度为O(n)),然后在通过遍历数组,通过判断该数字是否只出现一次,如果只出现一次则把它放进新的数组中,这样就把数...原创 2018-06-23 12:44:20 · 1640 阅读 · 0 评论 -
牛客网—矩形覆盖
题目描述:可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:类似于斐波拉契数列,用归纳法归纳如下:程序代码:原创 2017-12-28 22:39:39 · 412 阅读 · 0 评论 -
牛客网——跳台阶和变态跳台阶问题
1、跳台阶题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种方法?解答:这种问题一般是有规律的,跳1级台阶,只有1种方法;跳2级台阶,有2种方法;跳2级台阶,有3种方法;跳4级台阶,有5种方法,依次下去,跳一个n级的台阶的方法数是跳n-1级台阶的方法数与跳n-2阶台阶的方法数的总和。这种思路可以用逆推去想,要跳上一个n级台阶,可以从n-1原创 2017-12-19 15:33:54 · 9812 阅读 · 4 评论 -
牛客网——求1+2+3+......+n
题目:求1+2+3+......+n题目描述:要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A ? B : C)。解答:如果没有要求,可以直接用循环或判断语句(利用递归法)完成。现在有要求了,这样就需要考虑用其它方法来实现。1、在逻辑运算中,&& 运算符具有短路的性质:条件1不成立,则不执行条件2。2、利用 j原创 2017-12-20 10:14:34 · 581 阅读 · 0 评论 -
牛客网——二进制中1的个数
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。上面几种解法中,通过移位后进行&操作的解法比较普通,最优解的方法很简便,一定要掌握。注意:对于int数据类型,它是32位的。原创 2017-12-11 16:36:29 · 322 阅读 · 0 评论 -
牛客网——不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不能使用 +、-、*、/ 四则运算符。思路:不能用四则运算,那就只能利用位运算进行计算。十进制计算:例如 27+85=112分三步:(1)对各位只做相加不进位,结果为2; (2)考虑进位,7+5中有进位,进位的值是10;2+8有进位,进位的值是100; (3)将前面的三个结果相加,得到的结果为1原创 2017-12-19 22:30:30 · 350 阅读 · 0 评论 -
从尾到头打印链表每个节点的值
(1)使用递归的思想(2)使用栈:原创 2017-11-13 21:47:18 · 250 阅读 · 0 评论 -
java中替换字符串中的空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。注意:传入的变量是StringBuffer类型的字符串。解法有4种:(1)(2)正则表达式(3)(4)原创 2017-11-12 12:04:01 · 823 阅读 · 0 评论 -
字符串中最长公共子序列和最长公共子串
1、最长公共子序列例:BDCABA和ABCBDAB,最长公共子序列为 BCBA。DP解法:字符串1的长度为length1,字符串2的长度为length2,建立一个二维数组C[length1][length2]用来记录最长公共子序列的长度,状态转移方程为整个状态转移以及二维数组矩阵C为def find_lcseque(s1, s2): # 生成字符串长度加1的0矩阵...原创 2018-12-19 16:10:24 · 856 阅读 · 0 评论