随笔分类 - 刷题
Practise and summarize make perfect!
摘要:[TOC] 二叉树的最大深度 二叉树,所以可以考虑用递归来做。由于根节点已经算过了,所以需要加上1;每次返回都是以递归时的节点作为根节点进行判断的最大深度。还是比较好理解,代码如下: 在网上还看到了有人用队列来做,附代码如下: 这个方法也是非常的巧妙!利用队列来存储每一个要处理的节点,处理之前先记一
阅读全文
摘要:[TOC] 爬楼梯 第一想法自然是递归,而且爬楼梯很明显是一个斐波拉切数列,所以就有了以下代码: 但是在输入为44的时候提示超出时间限制了,仔细想想的确如此,反复递归、调用函数的开销还是挺大的。所以如果换成循环会不会好一点呢? 最小栈 这道题觉得可以构造一个vector容器,然后利用vector的相
阅读全文
摘要:[TOC] 缺失数字 最初的想法是将0到n全部加起来,再减去输入的数字之和,那么差如果非零的话就是我们所需要的数字。但是一想,可能会发生溢出错误,所以换了个思路,先进行排序后,后一个元素与该元素的差是否为1,不为1的话就说明缺了元素。这种方法不会发生溢出错误,代码如下: 颠倒二进制位 这道题比较简单
阅读全文
摘要:合并两个有序数组 开始的时候将这道题理解错了,发现几个奇怪的测试案例后才明白这道题什么意思。本来的想法就是把nums2全部放到num1里面,然后删除重复元素、排序一下,就有了下面的代码: 后来发现测试案例是这样给的:[1,2,3,0,0,0] 3 [2,5,6] 3,测试的意思是nums1初始化为【
阅读全文
摘要:删除链表的倒数第N个节点 感觉自己对于链表的知识还是了解的不够深入,所以没有想到用双指针进行操作。我的想法是这样的,首先计算整个链表的长度,然后遍历到长度减去n的节点处,执行删除操作。 自己的代码: 相信看过代码后都会觉得这个代码的逻辑比较奇怪,尤其是 这段代码,感觉是根据测试案例试出来的。的确是这
阅读全文
摘要:[TOC] 反转字符串 和vector同样的进行swap交换就可以了 此外,可以使用栈,将字符串的每个字符都转化成char数组,再将数组中的字符一次亚茹栈中,将栈中的字符依次弹出赋值给char数组,因为栈有先进后出的原则,所以在弹出的时候就已经自动完成了逆序操作。 字符串中的第一个唯一字符 想法是加
阅读全文
摘要:这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去;耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错。 下面完全是从数组的角度进行的思考:分析了各种情况综合得出代码: 此外还有一种解法: 这种方法就很机智的将进位c
阅读全文
摘要:参考了一位大神的解法,思路是这样的:首先判断是否为空元素,若为空直接返回;若不为空,则首先把nums[0]的数据先插入result中,比如[1,2,3]就会首先插入1变为[[1]],然后开始两个循环,一个是控制要加入的数据是哪一个,由i这个循环来控制,分别取到1、2、3,同时j这个循环负责在原来的基
阅读全文
摘要:这道题不用想得太多,就是从数组中找出不相同的元素依次放在数组的前部;如果全部不相同相当于每一步都执行nums[++j]=nums[i],如果有重复的该位会被后面不相同的数组元素所覆盖。如果是[1,2,3,3,3]这样的测试案例怎么办,最后的3不可能全部消除掉呀?所以最好加上nums.resize()
阅读全文
摘要:题目比较简单,只要算出数组中不包含本元素的其他元素乘积就行了。但是开头自己一直在犯傻,分了很多情况讨论当A[j]不等于A[i]的时候进行乘积,其中又包括等于0还是不等于0的情况。后来突然想到数组的话,只要下标不相等不就可以了么?所以直接AC,代码如下: C++ class Solution { pu
阅读全文
摘要:个人的想法是中序遍历所有的树结点,如果这个树结点的值在题目要求的k1与k2之间的话用一个数组把它给存起来。每有一个树结点就将其插入到vector新数组中,最后对这个数组进行排序再输出。但是测试时遇到{1,2, , ,4}之类的总是AC不了。也想过可能是因为 不能识别字符的原因,所以加上了判断 这个符
阅读全文
摘要:首先了解一下什么是丑数,丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数因为他包含了质因子 7。而判断一个整数是不是丑数则可以借鉴[517.丑数](http://www.cnblogs.com/yunlambert/p/8010871.html)。
阅读全文
摘要:丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数因为他包含了质因子 7。所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;
阅读全文
摘要:题目要求计算数字k在0到n中的出现的次数,k可能是0~9的一个值。自己的思路是这样的,如果n比k还要小,那肯定没有出现的次数;如果n是在0 9中的某个数,由于已经判断过n比k大,所以肯定出现了一次;如果n是 =10的,就进行逐位判断,具体操作就是取n的个位数进行比较是否等于k,等于就count加1,
阅读全文
摘要:题目要求出阶乘尾部后有多少个0,其实就是问阶乘里面有多少个10.所以这个问题也就可以等效于问表示阶乘这个数的质因数分解总共有多少个2与5,而2的个数肯定比5的个数多,所以我们只需要求出有多少个5就行了。而质因数分解一个数里有多少个5可以用公式:$n/5+n/5/5+n/5/5/5+……$来进行计算。
阅读全文
摘要:题目要求不给使用正常的四则运算,可以使用位运算。而A与B的二进制位的加运算其实就是异或运算"^"。但是考虑到每位可能有进位,所以还需要将A与B的位数都为1的和进位,通过 a&b
阅读全文