一、题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 二、思路 数列满足递增,设两个头尾两个指针i和j,若ai + aj &g…
剑指offer四十一之和为S的连续正数序列
一、题目 题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多…
剑指offer四十之数组中只出现一次的数字
一、题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 二、思路 建一个hashMap,统计各数字出现的次数,然后遍历hashMap,输出出…
剑指offer三十九之平衡二叉树
一、题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 二、思路 详解代码。 三、代码 public class Solution { &…
剑指offer三十八之二叉树的深度
一、题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、思路 递归,详见代码。 三、代码 public class&nbs…
剑指offer三十七之数字在排序数组中出现的次数
一、题目 统计一个数字在排序数组中出现的次数。 二、思路 解法一:遍历数组计数 解法二:考虑到时有序数组,所以采用分查找,找到第一个K 和 最后一个K的位置, 二者相减。 三、代码 解法一: public int G…
剑指offer三十六之两个链表的第一个公共结点
一、题目 输入两个链表,找出它们的第一个公共结点。 二、思路 如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的。也就是说两个链表从尾部往前到某个点,节点都是一样的。我们可以用两个栈分别来装这两条链…
剑指offer三十五之数组中的逆序对
一、题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 二…
剑指offer三十四之第一个只出现一次的字符
一、题目 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 二、思路 详见代码注释。 三、代码 import java.util.Linked…
剑指offer三十三之丑数
一、题目 如果一个数的因子中,出去1和本身以外,质数因子只包含2、3和5,则把改数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质数因子7。 习惯上我们把1当做是第一个丑数。求按从小到…
剑指offer三十二之把数组排成最小的数
一、题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 二、思路 &n…
剑指offer三十一之连数中1出现的次数(从1到n整数中1出现的次数
一、题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你…