![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题目
JRneymar
这个作者很懒,什么都没留下…
展开
-
数组中只出现一次的元素
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路: 在此题中强调了两类元素,一类只出现一次,另一类出现两次。一个元素出现两次联想到亦或运算,一个元素亦或本身,其结果为0, 所以求解此题时,可以先将所有数据进行亦或运算,那么最后结果就为两个只出现一次元素的亦或结果。接着在此结果的二进制形式中查 找第一次出现1的bit位,此位表明两个元素在此位原创 2016-07-25 14:32:06 · 608 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 思路: 使用非递归方式,也相当于进行先序遍历,将左子树节点压入栈内保存,直至叶子节点,计算遍历过程中路径的总长度,然后在遍历值叶子节点后判断路径长度和与所给定的路径值比较,如果相等则将此路径保存;否则,将当前的栈顶元素出栈,遍历右子树,直至原创 2016-07-27 11:58:29 · 263 阅读 · 0 评论 -
字典排序之全排列
简介:计算所给元素的所有全排列组合有多重方法,此篇文章说明字典排序方法求解全排列。何为字典排序?指的是元素按照0-9,a-z的顺序排列,这样使得与计算的全排列结果与上一个结果具有最长的前缀。 算法原理:P = {1,2,3,...n},元素集合 1、在P中从右向左遍历,直至查到 < ,记录i的值 2、在P中从右向左遍历,找到第一个比大的值 ,记录此时j的值 3、交换 ...原创 2018-10-13 15:06:29 · 1144 阅读 · 0 评论 -
快速排序
快速排序思想: 分治思想,确定基准元素middle,在middle左侧放置所有大于其的元素,右侧放置小于其的元素。然后切割区间,递归循环 void quickSort(int[] arr, int left, int right) { if (arr.length <= 1 || left >= right) { return ; ...原创 2018-11-13 20:16:19 · 139 阅读 · 0 评论 -
字典排序全排列--坐标法
在前一篇文章中记录了字典排序的全排列算法,但是这有一个前提就是需要保证其中的元素是有序的,因此这篇文章记录改进的字典有序全排列算法,额外记录其中元素的下标,保证下标有序。相当于对下标进行全排列,然后对于生成的坐标序列取对应的元素值,构成一个元素序列。 P = [9,8,7,1,2,3,4,...n] pos = [0,1,2,3,4,....,..m] pos记录p数组中元素的下标值,...原创 2018-11-15 20:56:05 · 623 阅读 · 0 评论