噜啦噜啦嘿

Thinking will not overcome fear but action will.

剑指offer第41题“和为S的连续正数序列”

和为S的连续正数序列 题目描述 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描...

剑指offer第40题“数组中只出现一次的数字”

数组中只出现一次的数字 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 *** 思路 异或运算的一个性质:任何一个数字异或它自己都等于0,也就是说,如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是哪个出现一次的数字,因为那些成对出现的两次的数字都在异或中低消了。 所以将本题中所有数字异或一遍,就能得到两个单独的数的异或...

剑指offer第3题“从尾到头打印链表”

从尾到头打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 *** 思路 emmmmC++是返回一个vector,vector可以使用函数reverse,直接将vector翻转。 C++实现 /** * struct ListNode { * int val; * struct ListNode *next; * ...

剑指offer第39题“平衡二叉树”

平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 *** 思路 据二叉树的定义,我们可以递归遍历二叉树的每一个节点来,求出每个节点的左右子树的高度,如果每个节点的左右子树的高度相差不超过1,按照定义,它就是一颗平衡二叉树。 C++实现 class Solution { public: int TreeDepth(TreeNode* pRoot) { ...

剑指offer第38题“二叉树的深度”

二叉树的深度 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 *** 思路 当前结点的深度就是1+左结点与右结点的最大深度。所以递归一下子,如果是空指针就返回0. C++实现 /* struct TreeNode { int val; struct TreeNode *left; struct Tree...

剑指offer第37题“数字在排序数组中出现的次数”

数字在排序数组中出现的次数 题目描述 统计一个数字在排序数组中出现的次数。 *** 思路 使用二分查找位置,一个是找第一次出现的,一个是找最后一次出现的,最后两个减减加个一。 C++实现 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { int lower = getL...

剑指offer第36题“两个链表的第一个公共结点”

两个链表的第一个公共结点 题目描述 输入两个链表,找出它们的第一个公共结点。 *** 思路 如果两个链表有公共结点,那第一个公共结点后面的结点都是公共的。 所以两个链表最后一个结点都是公共的。所以我们要考虑如何操作之后,可以在遍历两链表时,能同时遍历到最后一个结点。 我们可以比较两个链表的长度,先将较长的链表,先遍历一点,使两链表等长,之后一个一个比过去就完事了。 Java实现 /* pub...

剑指offer第35题“数组中的逆序对”

数组中的逆序对 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%...

剑指offer第34题“第一个只出现一次的字符”

第一个只出现一次的字符 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). *** 思路 用map存储每一个字符出现的次数,之后遍历字符串,找出第一个只出现一次的字符,直接返回下标。 C++实现 class Solution { public: int First...

剑指offer第33题“丑数”

丑数 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 *** 思路 set有去重加排序功能,可以利用set存储所有丑数,每次当前丑数取出2,3,*5,存入set,作为丑数 之后找到相应丑数即可。 第0个返回0,坑到我了 C++实现 class So...