剑指offer
文章平均质量分 72
E01014165
这个作者很懒,什么都没留下…
展开
-
连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)。看到这个题目,我们首先想到的是求出这个整型数组所有连续子数组的和,长度为n的数组一共有 n(n+2)/2个子数组,因此要求出这些连续子数组的和最快也需要O(n^2)的时间复杂度。但是题目要求的O(n)的时间复杂度,因此上述思路不能解决问题。转载 2016-06-24 00:19:58 · 317 阅读 · 0 评论 -
丑数
解法一 《参考程序员面试金典》1)初始化array和队列:Q2 Q3 Q52)将1插入array3)分别将1*2、1*3 、1*5插入Q2 Q3 Q54)令x为Q2 Q3 Q5中的最小值,将x添加至array尾部5)若x存在于: Q2:将 x * 2、x * 3、x*5 分别放入Q2 Q3 Q5,从Q2中移除x Q3:将 x *转载 2016-06-24 21:50:02 · 333 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。/*考虑过程: 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己原创 2016-06-27 21:42:15 · 372 阅读 · 0 评论 -
约瑟夫环 (孩子们的游戏(圆圈中最后剩下的数))
每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样原创 2016-06-29 12:08:45 · 1494 阅读 · 0 评论 -
逻辑运算符的短路特性 求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。逻辑与的短路特性:当&&左部分的表达式为false,则不执行右部分的表达式public class Solution { public int Sum_Solution(int n) { int sum =原创 2016-06-29 15:51:55 · 1327 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解法一:递归/* public class ListNode { int val; ListNode next = null; ListNode(int val) {原创 2016-06-30 11:52:04 · 280 阅读 · 0 评论 -
二叉树的下一个节点(中序)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode原创 2016-06-30 17:27:36 · 405 阅读 · 0 评论 -
字符串全排列
[java] view plain copy import org.junit.Test; public class AllSort { public void permutation(char[] buf, int start, int end) { if (start == end) {// 当只要求对数转载 2016-08-27 17:15:00 · 610 阅读 · 0 评论