剑指Offer
SummerGoNow
这个作者很懒,什么都没留下…
展开
-
剑指Offer39:数组中出现次数超过一半的数字
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在这个数组中出现了5次,超过数组 长度的一半,因此输出2 分析: 若一个数组中有一个数字出现了数组长度的一半以上,则必是这个数组的中位数 方法一:最简单粗暴,将数组排序,找出中位数, 时间复杂度为O(nlog(n)) public int Meth...原创 2018-11-13 13:40:16 · 116 阅读 · 0 评论 -
剑指Offer42:连续子数组的最大和
题目: 输入一个整形数组,数组里有正数,也有负数。数组中的一个或连续多个整数组成一个子数组。 求所有子数组的和的最大值。 /** * 从0开始扫数组,max=0. * 若累计的和为负数,则及时舍去,从下一位数开始为起点。 * 若累计的和不为负数,但所加的下一个数是负数,则要保存当前的连续子数组最大值 * @param nums * @return */ public in...原创 2018-11-15 15:26:33 · 843 阅读 · 1 评论 -
剑指Offer36:二叉树与双向链表的转换
题目: 输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 例如: 分析过程: 1.指针的调整: 原先指向左子节点的指针,变成指向上一节点的指针 原先指向右子节点的指针,变成指向下一节点的指针 2.调整思路: 对于示例这种基本情况,可以分成三个部分来看,根节点10,左子树,右子树,需要做的就是将10与左子树中的最大值连起来,然后把1...原创 2018-11-12 16:06:11 · 364 阅读 · 0 评论 -
剑指Offer38:字符串的排列
题目: 输入一个字符串,打印出该字符串中字符的所有排列。 例如:输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba 分析:可将字符串分为两部分,第一部分是第一个字符,第二部分是其他。 依此向下挪动第一个字符,第一个字符与其他不一样的字符调换。重新组合成新的字符串 public class Offer38 { public void Pe...原创 2018-11-12 17:07:03 · 155 阅读 · 0 评论