algorithm
youngsend
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二维数组的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。类似二分查找,我们每次选择一个中心元素a[t1][t2],然后我们可以将这个数组分割成A、B、C、D四块。 A B C D 若原创 2015-10-05 16:56:32 · 379 阅读 · 0 评论 -
由前序遍历和中序遍历重建二叉树
唯一的难点就是确定当前节点的左子树的根节点和右子树的根节点分别在前序遍历数组的位置。例如先序遍历数组pre:1 2 3 4 5 6 7 中序遍历数组in: 3 2 4 1 6 5 71是当前根节点,它在pre中的位置pre_start = 0接着在in中找到1的位置,即分割点j = 3当前树根所囊括的in数组范围是in_start = 0; in_end = in.length-1;将in按j分原创 2015-10-05 16:45:22 · 553 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:使用了两个指针,start指向第一个偶数,end指向最后一个奇数,这样可以优化重排序的范围,只有当相邻两个元素,左边是偶数,右边是奇数时才交换。代码如下:public class Solution { publ原创 2015-10-05 21:32:01 · 402 阅读 · 0 评论 -
顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:用一个标记矩阵记录走过的点。有四种走的可能方向:Right: if I can go right and go down, I g原创 2015-10-06 08:52:17 · 337 阅读 · 0 评论 -
复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。第一步,只按照next域复制链表; 第二步,按next域同步遍历原始链表和新链表,每访问到原始链表的一个非空节点p2(此时访问到新链表上的clone2节点),找到它的random域指向的节点pRandom; 然后再按next域从头同步遍历原始链表和新链表,当原始链表上抵达pRandom原创 2015-10-06 09:51:24 · 478 阅读 · 0 评论 -
树的子结构
题目:输入两颗二叉树A,B,判断B是不是A的子结构。有两个任务,第一是比较B树和A的以某个根节点开始一个局部树是否完全相等(isSub()),第二是遍历A(HasSubtree())。代码如下:public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1=原创 2015-10-05 23:25:21 · 558 阅读 · 0 评论 -
字符串的排列
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。递归是个容易想到的思路,每个递归,我决定一个位置该放那个字符。然后想,这个递归函数,我需要哪些输入? 1. 一个排原创 2015-10-06 17:12:13 · 482 阅读 · 0 评论
分享