
algorithm
iteye_17895
这个作者很懒,什么都没留下…
展开
-
判断字符串中是否存在重复字符
题目:判断一个给定的字符串中是否存在重复字符 解答:为了简单起见,假定需要进行判断的字符串的所有字符都在ASCII基础字符表范围内,判断算法如下: private boolean hasDuplicateCharacter(String str){ if(str == null){ return false; }else{ ...2013-07-10 21:40:03 · 827 阅读 · 0 评论 -
Java堆排序
/** * 确保parent最大 * * @param array * @param parentIndex 父节点 * @param endIndex 最大节点 */ private static void maxHeapify(int[] array, int parentIndex, int e...原创 2014-05-12 19:07:04 · 147 阅读 · 0 评论 -
插入排序
import java.util.Arrays;public class InsertionSort { private static int[] insertionSort(int[] array){ if(array == null || array.length <= 1){ return array; }else{ for(int i=1;...原创 2014-05-04 20:37:24 · 112 阅读 · 0 评论 -
二叉树的广度优先遍历
二叉树的广度优先遍历可以简单的理解为按层遍历,每层依次从左至右遍历,其实现如下: public class TreeNode{ //左子节点 private TreeNode leftChild = null; //右子节点 private TreeNode rightChild = null; //节点数据 private i...2013-07-17 22:39:56 · 105 阅读 · 0 评论 -
二叉树的前序遍历
二叉树的前序遍历主要规则是:1. 先访问父节点,左子节点次之,又子节点再次之;2. 如果子节点包含子节点,对子节点进行前序遍历 代码实现如下: public class TreeNode{ //左子节点 private TreeNode left = null; //又子节点 private TreeNode right = ...2013-07-15 23:08:10 · 157 阅读 · 0 评论 -
原地整数交换
题目:将两个整数原地交换,不允许创建变量 解法: 存在整数a、b,令x = a - b, 则交换公式为 b = x + b,a = b - x 代码如下private void swapInPlace(int a, int b){ a = a - b; b = b + a; a = b - a;} ...2013-07-15 22:03:11 · 113 阅读 · 0 评论 -
原地快速排序
原地快速排序的步骤如下: 1. 取序列中的任意值作为一个基准值; 2. 将该基准值与序列的头或者尾进行交换; 3. 将基准值之外的其他值与基准值进行比较,小于基准值的交换到序列前面,大于基准值的交换到序列后面; 4. 将基准值交换到序列的分界线处; 5. 将序列按基准值分为两部分分别进行快速排序; 代码如下:private ...2013-07-15 21:47:15 · 1422 阅读 · 0 评论 -
归并排序
归并排序是将两个已经排序好的序列合并为一个已排序的序列,其操作步骤如下: 1. 创建一个长度为两个序列长度之和的空间; 2. 使用两个指针分别指向两个序列的起点; 3. 比较两个指针所在位置的值,将较小的值依序放入新分配的空间; 4. 当一个序列遍历完毕,将另一个序列剩下的数据全部依序摆入分配的空间; ...2013-07-15 19:59:17 · 89 阅读 · 0 评论 -
将二进制的一段替换为另一段二进制
题目: 给定32bit的数字N、M,两个字节位i、j(0<i<j)。写一个算法将数字N的第i到j之间的bit值替换为数字M的bit值。 例如下面的这个例子: int N = 0b10000000000, int M = 0b10101, int i = 2, int j = 6; 替换的结果为 N = ...2013-07-14 11:21:43 · 561 阅读 · 0 评论 -
获取二叉树中两个节点的最近公共祖先
题目:获取一颗二叉树中任意两个节点的最近公共祖先 解答://二叉树节点对象public class TreeNode{ private TreeNode left = null; private TreeNode right = null; private int data = 0; public TreeNode getLeft(...2013-07-13 21:04:58 · 187 阅读 · 0 评论 -
矩阵旋转
题目:使用一个N*N的矩阵来表示一张图面,图片中每一个像素是4 byte,编写一个方法将该图片原地旋转90度 解答: 类似于剥洋葱的方式,从外层向里层逐一顺时针旋转 private static void rotateAQuarter(int[][] matrix){ if(matrix == null){ ...2013-07-12 22:00:43 · 107 阅读 · 0 评论 -
判断两个字符串是否由相同的字符组成
题目:两个给定的字符串是否由相同的字符组成 解答1:将两个字符串排序,然后逐位比较; 解答2: 判断两个字符串中字符的类型和各种类型的数量是否都相同 private boolean areAnagrams(char[] str0, char[] str1){ if(str0 == null && str1 == null){...2013-07-12 20:00:07 · 363 阅读 · 0 评论 -
删除字符串中的重复字符
题目:删除一个字符串中重复字符,要求不能使用额外的缓冲区,不能复制字符串,可以使用一两个变量。 解答: function String removeDuplicates(char[] str){ if(str != null && str.length > 1){ for(int i=0; i<str.length-...2013-07-10 22:25:37 · 179 阅读 · 0 评论 -
字符串反转
题目:将一个字符串反转 解答:将字符串从头和尾分别同步向中间步进,每步进一次将对应的字符调换,直到走完整个字符串 private char[] reverse(char[] str){ if(str != null && str.length > 1){ for(int i=0, j=(str.length-1); i...2013-07-10 22:05:46 · 96 阅读 · 0 评论 -
Reverse Words in a String
Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".Clarification: What constitutes a word?A sequence of non-space char...原创 2014-05-23 17:09:51 · 126 阅读 · 0 评论