题目来源:《剑指offer》面试题31、《编程之美》2.14 题目:输入一个整形数组,数组里有正数也有负数。数组中一个或连续多个整数组成一个子数组。求所有子数组的和的最大值 解法一:假设id代表自序列的一个起点,j代表终点。如果a[i]是负的,那么它不可能代表最优子序列的起点,因为任何包含a...
分类:
编程语言 时间:
2015-09-03 23:14:50
阅读次数:
214
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:(1)首先考虑数组中若是只有一个数字是出现一次,其他都是出现两次的情况,在这种情况下,将所有的数字都位异或运算(^),因为相同的数字异或结果为0,所以最后地到的结果就是那个出现一次的数。(2)下面...
分类:
编程语言 时间:
2015-09-03 19:14:54
阅读次数:
204
题目来源《剑指offer》面试题29、《编程之美》2.3 题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. 解法1:数组中有一个数字出现的次数超过了...
分类:
编程语言 时间:
2015-09-03 19:05:47
阅读次数:
163
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。分析:使用两个栈,一个正常存取元素,一个栈用来存储最小的元素,代码如下: 1 import java.util.Stack; 2 3 public class Solution { 4 5 Stack s1...
分类:
其他好文 时间:
2015-09-03 11:35:19
阅读次数:
133
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。代码如下: 1 import...
分类:
其他好文 时间:
2015-09-03 11:33:56
阅读次数:
123
题目:统计一个数字在排序数组中出现的次数。思路:因为是排好序的数组,所以可以采用二分查找的算法。一般最容易想到的思路是采用二分查找先找到一个,然后往他左右两边遍历,但是这个方法由于在n个数组中还可能有n个k,所以查找的复杂度还是O(n)可以先用二分查找算法找到第一个出现的位置,即当找到一个时,看它前...
分类:
编程语言 时间:
2015-09-03 10:19:58
阅读次数:
350
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。分析:镜像的递归定义就是将原有二叉树中节点的左右子树对调。代码如下: 1 /** 2 public class TreeNode { 3 int val = 0; 4 TreeNode left = null; 5 Tree...
分类:
其他好文 时间:
2015-09-02 00:07:34
阅读次数:
211
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。分析:两棵树A 和B,判断B是不是A的子树,分为三种情况,一,A的根和B的根相同,则继续比较A的左子树与B的左子树,A的右子树与B的右子树。二,若A的根和B的根不同,这比较B是不是在...
分类:
其他好文 时间:
2015-09-01 22:43:50
阅读次数:
236
相关题目:《剑指offer》面试题7templateclass Queue { public: Queue(); ~Queue(); void Push(const T& value) { s1.push(value): } void...
分类:
编程语言 时间:
2015-09-01 16:45:15
阅读次数:
160
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。思路:采用归并排序的思想,将数组中的元素分割成子数组,先统计出子数组里的逆序对的个数。同时将这些子数组的数字排成有序的慢慢往多的合并,在合并的过程中一面统计逆序对的个数,...
分类:
编程语言 时间:
2015-09-01 16:43:26
阅读次数:
174