题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:因为只有两个只出现一次的数字,所以所有数字进行异或之后得到值res一定不是0.这样,res中其中至少1bit不是0,我们根据这个bit是否为0把数组分为两组,两个只出现一次的数字肯定在不同的组。其...
分类:
编程语言 时间:
2015-08-27 22:56:11
阅读次数:
187
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。输入: 每个测试案例包括2行: 第一行输入一个整数n(1#include#include...
分类:
编程语言 时间:
2015-08-27 16:40:58
阅读次数:
150
用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
/**
*题目:用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
*时间:2015年8月27日09:52:06
*文件...
分类:
其他好文 时间:
2015-08-27 15:19:07
阅读次数:
136
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1
这个题可以借助二分查找的思想:
二分查找的时间复杂度是:O(logn)
/**
*题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增...
分类:
编程语言 时间:
2015-08-27 15:17:51
阅读次数:
137
写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下
我们的第一反应是使用递归来做,但是实际上递归的效率非常之低
public static long TiaoJi(int n)
{
if(n <= 0)
return 0;
if(n == 1)
return 1;
return TiaoJi(n - 1) + TiaoJi(n - 2);...
分类:
其他好文 时间:
2015-08-27 15:17:32
阅读次数:
128
题目:在数组中如果两个数字的前面的数比后面的数大,则称为一对逆序对。输入一个数组求出数组中逆序对的总数。以空间换时间:思路:借助一个辅助数组,将原来的数组复制到该数组中。然后将该数组分成子数组,然后统计子数组中内部的逆序,然后再统计两个相连的子数组中的逆序对,这个过程用到了归并排序。时间复杂度为O(...
分类:
编程语言 时间:
2015-08-27 15:07:10
阅读次数:
141
题目:在字符串中第一次出现切只出现一次的字符思路:用HashMap来存放对应的char值和该char出现的次数。做一次变量就可以得到第一个只出现一次的字符。Java代码:import java.util.LinkedHashMap;//思路:用HashMap来存放对应的char值和该char出现的次...
分类:
其他好文 时间:
2015-08-27 00:10:29
阅读次数:
146
1:二进制中1的个数第一种做法:最直接的将数对二作除法和余数操作。统计余数中1的个数第二种做法:将该二进制数和1做与运算,然后再右移操作。但是这里有一个问题就是右移运算符,将最右边的几位丢弃。并且容易陷入死循环,剑指offer第79页专门提出这个问题并给出了解释如果数字是一个无符号数,则用0填充最左...
分类:
其他好文 时间:
2015-08-26 22:04:50
阅读次数:
211
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。1 public class Solution {2 public int NumberOf1(int n) {3 int count = 0 ;4 while(n!=0){5 ...
分类:
其他好文 时间:
2015-08-26 13:45:05
阅读次数:
138
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。分析:数组旋转后会变为一个局部有序的数组,分为两部分,都是递增的。查找最小元素,我...
分类:
编程语言 时间:
2015-08-26 13:44:15
阅读次数:
145