剑指41-和为S的连续正数序列 Posted on 2019-09-13 | In 剑指offer | 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 ... Read more »
剑指40-数组中只出现一次的数字 Posted on 2019-09-13 | In 剑指offer | 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 从头到尾依次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次的数字的异或的结果。因为其他数字都出现两次,在异或中全部抵消了。由于这两个数字肯定不一样,那么异或的结果肯定不为0,也就 ... Read more »
剑指39-平衡二叉树 Posted on 2019-09-13 | In 剑指offer | 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 递归,参数是节点,返回节点是否是平衡二叉树的判断,如果是平衡二叉树返回以其为根节点的子树的深度。如下代码用一个返回项来表示返回的 ... Read more »
剑指38-二叉树的深度 Posted on 2019-09-13 | In 剑指offer | 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 循环和递归,递归函数的参数是节点root及其父节点的深度k,以及一个全局的引用变量dpthlist(用对象的成员变量也行)用来存储叶节点的深度。 一旦遇到空节点,返 ... Read more »
剑指37-数字在排序数组中出现的次数 Posted on 2019-09-13 | In 剑指offer | 题目描述 统计一个数字在排序数组中出现的次数。 二分递归查找,终止条件是找到一个该数字,边界是递归函数的参数数组是空。 如果找到了该数字,分别向左右遍历该数字直到不是该数字为止,计数。 12345678910111213141516171819202122232425class Solutio ... Read more »
剑指36-两个链表的第一个公共结点 Posted on 2019-09-13 | In 剑指offer | 题目描述 输入两个链表,找出它们的第一个公共结点。 找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走。 12345678910111213141516171819202122232425class Solution: def FindFirstCommonNode(self, ... Read more »
剑指35-数组中的逆序对 Posted on 2019-09-13 | In 剑指offer | 问题 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007 分治和递归。将序列每次折半划分成两个子数组,对应两个子问题。两个子问题解决了,即得到 ... Read more »
剑指34-第一个只出现一次的字符位置 Posted on 2019-09-12 | In 剑指offer | 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 字典记录,前后只要遍历两次,复杂度是O(n)。 123456789101112131415class Solution: ... Read more »