- 博客(9)
- 收藏
- 关注
原创 打印两个有序链表的公共部分
引言 打印两个有序链表的公共部分。给定的两个链表的头部head1和head2,打印出两个链表公共部分。思路 定义两个指针,分别指向两个链表的头结点,比较value值,谁小移动谁;相等打印并同时移动,任何一个节点下一个节点是null,程序结束。代码实现public class TwoLinkedCommon { public static class Node{ ...
2018-04-18 22:30:10 278
原创 判断链表是不是回文数
引言 判断链表是不是回文数。给定一个链表,判断是不是回文数,返回true或者false。思路 链表代码 public static class Node{ public int value; //值 public Node next; // 下一个节点 public Node(int value) { th...
2018-04-18 21:24:58 1007 1
原创 “之”字形打印矩阵
引用 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵。例如 1,8,6,7 2,6,4,11 3,5,9,10 打印结果是1,8,2,3,6,6,7,4,5,9,11,10。要求额外空间复杂度是O(1)。 思路 两个坐标进行记录,都从0,0点开始。一个往右移动,移动到最右往下移动;另一个往下移动,移动到最下往右移动,两个坐标...
2018-04-09 23:18:41 1938 6
原创 打印两个有序链表的公共部分
引言 给定两个链表,打印两个链表中的公共部分。思路 从两个链表的第一个节点的value值开始比较,谁小移动谁。如果相等就输出,并同时移动到下一个节点。代码public class TwoLinkedListSame { /** * 链表 */ public static class Node{ public int value; ...
2018-04-07 22:25:08 212
原创 在行列都排好序的矩阵中找数
引言 给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好序的。实现一个函数,判断K是否在matrix中。 返回true或false 时间复杂度为O(N+M),额外空间复杂度为O(1)。 有两种解决方案: 思路1:从右上或者左下开始找。从右上点开始,如果这个数比要找到K大,那么不用考虑左上点这一列的数,直接往左走。 ...
2018-04-07 22:17:32 466
原创 实现返回栈中最小的元素
引用 实现一个特殊栈,在实现栈的基本功能的基础上,再实现返回栈中最小的元素。 要求:1.pop、push、getMin操作的时间复杂度都是O(1) 2.设计的栈类型可以使用现成的栈结构 思路: 1.因为要求时间都是O(1)、所以有可能在删除后会出现找不到最小值问题 2.创建两个栈,一个data栈,一个min栈,data栈记...
2018-04-07 22:00:48 612
原创 堆排序
引言 堆可以看成是一棵树,定义堆的高度可以看成是树的高度。是一个平衡二叉树,根节点永远是最大的值。每个根的子节点有两个,左子节点是2*i+1,右子节点是2*i+2。每个子节点的父节点是(i-1)/2。子节点用于比父节点小。每次找到最大值,替换到后面,然后慢慢把数组排序好。 堆排序的时间复杂度是O(N*logN),额外空间复杂度是O(1),实现不能做到稳定性。代码public class...
2018-04-03 22:10:06 135
原创 桶---求无序数组排序后,最大的相邻差值
引言 无限长的无序数组 ,正负零都有可能。求出排序后最大的相邻的差值 时间复杂度O(N) 且要求不能用非基于比较的排序思路 1. 找出数组中的最大元素,分配最大元素+1个桶,对桶等分如一号桶(0-9)、二号桶(10-19)..... 2. 因为元素最大是N,所以准备了N+1个桶,所以肯定最小桶和最大桶肯定有数,中间有空桶 3. 如果两个非空桶中间有空桶,那...
2018-04-01 16:04:41 252
原创 桶---连续整数,找中间缺少的两个数
引言 现在有1-N个连续整数,顺序被打乱了,但中间少两个数,请找到这两个数思路 1.有1-N个连续数组,中间少两个数,那么就准备一个N+2的boolean类型的数组桶 2.把连续数组元素的作为桶的下坐标,把桶下坐标的值变为true 3.从1开始循环boolean桶,把元素false的下坐标找出来,就是缺少的数代码public class FindMissedNumber {...
2018-04-01 15:49:15 560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人