刚刚看了王晓华前辈在《算法的乐趣》一书的前言中提到了一个面试题:
有一个由若干正整数组成的数列,数列中中的每个数都不超过32,已知数列中存在重复的数字,请给出一个算法找出这个数列中所有重复的数字。
我用java实现了一种方法:
package com.wr.FindSameNum;
public class FindSameNum {
public static void main(...
分类:
编程语言 时间:
2015-07-14 15:41:53
阅读次数:
321
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。我们想到异或运算的一个性质:任何一个数字异或它自己都等于0。也就是说, 如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,因为那些成对出现两次的数字全部在异或中抵消了。...
分类:
编程语言 时间:
2015-07-06 12:21:17
阅读次数:
139
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
解题思路:
第一种:直观解法先求出这个数组中所有数字的全排列,然后把每个排列拼起来,最后求出拼起来的数字的最大值。
第二种:排序解法找到一个排序规则,数组根据这个规则排序之后能排成一个最小的数字。...
分类:
编程语言 时间:
2015-07-04 09:39:58
阅读次数:
178
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
解题思路:
解法一:基于Partition 函数的O(n)算法
解法二:根据数组组特点找出O(n)的算法...
分类:
编程语言 时间:
2015-07-03 09:14:29
阅读次数:
143
删除数组中一个或者多个连续的元素
参考Java StringBuffer、AbstractStringBuilder实现...
分类:
编程语言 时间:
2015-07-02 21:10:20
阅读次数:
139
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:
1. 字符串
2. 链表
3. 树
4. 图
5. 排序
6. 递归 vs. 迭代
7. 动态规划
8. 位操作
9. 概率问题
10. 排列组合...
分类:
编程语言 时间:
2015-06-17 11:38:20
阅读次数:
180
题目:求两字符串的最长公共子序列的长度。题外话:最长公共子串,子序列问题是被充分讨论的问题,网上一搜一大把,请bing之。本题只要求求最长公共子序列的长度,而不需要记录最长的公共子序列,给予了我们便利,请参考代码: 1 int max(int a, int b) 2 { 3 return a...
分类:
编程语言 时间:
2015-05-12 01:26:02
阅读次数:
207
题目:在整型数中只有1位是1,求1在整型数中的位置?通常,面试者给的答案是一位一位的右移,并判断是否移位后的值是1,如果是1,输出被移位的位数就是我们要的答案了。但是这并不是最优的答案,时间复杂度是O(n)。那么更好的算法是什么样的呢,其实我们可以采用二分法更高效的解决本问题,时间复杂度是O(log...
分类:
编程语言 时间:
2015-05-08 01:31:21
阅读次数:
167
最近在求职面试,整理一下常见面试算法:对TestAlgorithms.java中方法的测试见JunitTestAlgorithms.java(引入了junit4)1.TestAlgorithms.java 1 package carl; 2 3 import org.junit.Test; ...
分类:
编程语言 时间:
2015-05-06 19:36:29
阅读次数:
242
By Long Luo个人博客链接最近去面试时,在一家小公司面试时,公司小BOSS给我出了一道算法题:一个人爬楼梯,一步可以迈一级,二级,三级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法。
这个问题应该是一个很老的题目了,用中学数学来说,就是一个排列组合问题。当时拿到这个题目之后,首先想到使用递归的思想去解决这个问题:N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之...
分类:
编程语言 时间:
2015-04-21 18:04:19
阅读次数:
251