有趣的算法
无码之宗
这个作者很懒,什么都没留下…
展开
-
求出链表中倒数第n个节点
问题描述: 求出链表中倒数第n个节点。例如:1,2,3,4,5,倒数第2个是4解法与分析: 用两个指针的方法。 1. 第一个指针起始位置在0位置,第二个指针起始位置在n-1位置。 2. 两个指针同时移动,每次移动1个结点。 3. 当第二个指针移动到最后一个节点时,第一个指针所指结点就是倒数第n个结点。static class ListNode{ i转载 2017-01-04 22:28:00 · 422 阅读 · 0 评论 -
加权quick-union算法
在java虚拟机内存回收的时候采用的是可达性分析算法,就是设置一个GCRoot的对象作为起始点,从这个节点开始向下搜索,搜索所走过的路径叫做引用链,当一个对象到GCRoot没有任何引用链链接时,证明此对象是不可达的。这时这个对象就可以被回收了。下面介绍一下这个可达性分析算法:加权quick-union算法public class WeightedQuickUnionUF{ private原创 2017-01-05 20:29:30 · 2393 阅读 · 0 评论 -
单链表翻转
单链表翻转是一道很基本的算法题一般的处理办法是设定三个指针,将第二个指针的next指向第一个指针,然后逐渐后移class Node{ int value; Node next; } Node ReverseList(Node head) { Node p1, p2, p3; if(head == null) return h原创 2016-12-31 11:26:17 · 199 阅读 · 0 评论 -
查找数组中重复的数字
1.一个数组长度是n+1 范围是1~n-1 查找至少一个数组中重复的数字public static void main(String[] args) { //长度必须是N+1, 范围是1~N-1 int[] a = new int[]{1,2,3,4,5,6,7,8,3,9}; System.out.println(find1(a) + ""); System.out.p原创 2016-12-31 12:38:46 · 418 阅读 · 0 评论