常见笔试面试算法
dreamsyoung
这个作者很懒,什么都没留下…
展开
-
二分查找算法
public class BinarySearch { public static int binarySearch(int[] a, int start, int end, int des) { while (start <= end) { int middle = (start + end) / 2; if (des == a[middle]) { return原创 2015-07-08 15:02:18 · 440 阅读 · 0 评论 -
二进制1的个数
看代码:public static int countone(int n){ int count=0; while(n!=0){ n=n&(n-1); count++; } return count; }n&(n-1)将n末尾1消去,神器。原创 2015-07-24 09:25:40 · 441 阅读 · 0 评论 -
Java实现经典排序算法及复杂度稳定性分析
1.冒泡排序算法/* 冒泡排序 */ public static int[] bubbleSort(int[] arry) { for (int i = 0; i < arry.length; i++) { for (int j = i; j < arry.length - i - 1; j++) { if (arry[j] > arry[j + 1]) { int原创 2015-07-03 12:38:55 · 816 阅读 · 1 评论 -
Java面试之斐波纳契数列递归与非递归实现
问题:查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 解答:(一)递归实现:class Solution { /** * @param n: a原创 2015-06-08 11:38:03 · 724 阅读 · 0 评论 -
Java 阶梯性打印九九乘法表
public class test { /** * @param args */ public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { if ((i == 3 && j == 3) || (i == 4 && j =原创 2015-04-24 09:35:57 · 2313 阅读 · 0 评论 -
统计0到n中1的个数
什么都不说,直接上程序:public class CountNumberOne { public long CountNumberOne(long n){ long i = 0,j = 1; long count = 0; for (i = 1; i <= n; i++) { j原创 2015-05-26 10:30:15 · 489 阅读 · 0 评论 -
java二叉树非递归之前序遍历
思路:采用栈来实现非递归遍历步骤:1.对root进行异常处理2.将root压入栈3.循环终止条件为栈s为空,所有元素均已处理完4.访问当前栈顶元素(首先取出栈顶元素,随后pop掉栈顶元素)并存入最终结果5.将右、左节点分别压入栈内,以便取元素时为先左后右。6.返回最终结果/** * Definition for a binary tree node.原创 2015-08-05 12:14:41 · 441 阅读 · 0 评论 -
java二叉树非递归之中序遍历
思路:使用辅助栈改写递归程序,中序遍历没有前序遍历好写,其中之一就在于入栈出栈的顺序和限制规则。我们采用「左根右」的访问顺序可知主要由如下四步构成。步骤:1.首先需要一直对左子树迭代并将非空节点入栈2.节点指针为空后不再入栈3.当前节点为空时进行出栈操作,并访问栈顶节点4.将当前指针p用其右子节点替代步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。原创 2015-08-05 12:29:32 · 741 阅读 · 0 评论 -
FIFO、LRU、OPT这三种置换算法的缺页次数
考虑下述页面走向: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少? 答:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。 当内存块数量为3时:原创 2015-09-05 14:26:41 · 1522 阅读 · 0 评论