题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。算法描述打擂算法:多的留下,少的走
先找出数最多的,然后找有多少个数,最后判断数目是否超过了一半,
θ(n)时间复杂度代码实现class Solution {
public:
int Mor...
分类:
编程语言 时间:
2015-09-21 01:37:53
阅读次数:
286
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
题目解析:首先想到的就是插入法,。改进一下就是前面一直保持7个有序数字。遍历剩下数组,元素若小于最大值就交换。用C++的set来解决代码就简洁多了,删除插入都是lo...
分类:
其他好文 时间:
2015-09-21 01:26:04
阅读次数:
190
题目描述:输入一个链表,输出该链表中倒数第k个结点。 题目解析:设两个同步后移、相距k的指针就行,前面的指针触底,后面的指针即是倒数k个节点。
分类:
其他好文 时间:
2015-09-20 23:44:20
阅读次数:
135
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
分类:数组,二叉树
解法1:对于搜索二叉树而已,后续遍历的最后一个节点,就是根节点,并且根节点将树分成两部分
一部分小于根节点,一部分大于根节点,也就是左右子树
于是遍历数组,找到小于根节点的最后一个数所在index
...
分类:
其他好文 时间:
2015-09-20 16:22:28
阅读次数:
201
题目来源:《剑指offer》面试题36 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这两个数组中的逆序对的总数。例如数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6),(7,5),(7,4),(6,4)和(5,4)。 下面...
分类:
编程语言 时间:
2015-09-20 13:10:29
阅读次数:
181
从上往下打印二叉树
参与人数:1577时间限制:1秒空间限制:32768K通过比例:25.53%最佳记录:0 ms|0K(来自 dust347)
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题意:就是树的层次遍历。想象一下,从根结点依次往下,每行从左到右,这不就是是入队和出队的操作嘛!
so...代码很容易吧。
/*
...
分类:
其他好文 时间:
2015-09-20 12:00:40
阅读次数:
203
树的子结构
参与人数:1611时间限制:1秒空间限制:32768K
通过比例:18.19%
最佳记录:0 ms|0K(来自 mearo)
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
链接:http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?rp=1&ru=/t...
分类:
其他好文 时间:
2015-09-19 16:52:02
阅读次数:
491
题目来源:《剑指offer》面试题45 题目:0,1,。。。,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 解法一:经典解法,用环形链表模拟圆圈。这种方法每删除一个数字需要m步运算,总共有n个数字,因此总的时间复杂度是O(mn)...
分类:
编程语言 时间:
2015-09-19 16:46:31
阅读次数:
156