随笔分类 -  算法

摘要:1. 1的个数 同样一个问题,位运算可以提高程序的运行效率。 下面讲一下关于奇偶性的判断。 常规方法 public static boolean isOdd(int i){ return i % 2 != 0; } 位运算方法 public static boolean isOdd(int i){ 阅读全文
posted @ 2018-10-18 11:14 思考的胖头鱼 阅读(1793) 评论(0) 推荐(0)
摘要:import java.util.ArrayList;import java.util.LinkedList; /*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tre 阅读全文
posted @ 2018-10-18 11:06 思考的胖头鱼 阅读(227) 评论(0) 推荐(0)
摘要:按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路 代码 阅读全文
posted @ 2018-10-17 19:47 思考的胖头鱼 阅读(1348) 评论(0) 推荐(0)
摘要:package 剑指offer.二叉树中和为某一值的路径; import java.util.ArrayList; /** * Created by nick on 2018/10/12. */ public class Solution { public static void main(String[] args) { TreeNode root =new T... 阅读全文
posted @ 2018-10-12 23:04 思考的胖头鱼 阅读(463) 评论(0) 推荐(0)
摘要:再简单总结下堆排序的基本思路: a.将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆; b.将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端; c.重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。 阅读全文
posted @ 2018-10-09 22:20 思考的胖头鱼 阅读(129) 评论(0) 推荐(0)
摘要:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 阅读全文
posted @ 2018-10-09 21:47 思考的胖头鱼 阅读(136) 评论(0) 推荐(0)
摘要:1.懒汉模式:在多线程下不能正常工作,因为没有加锁 synchronized,所以严格意义上它并不算单例模式。 2.懒汉模式线程安全 3.饿汉式 4.双检锁 采用volitale使singleton在线程间可见,通过synchronized使得不能同时有两个线程同时new Singleton() 5 阅读全文
posted @ 2018-10-09 21:26 思考的胖头鱼 阅读(144) 评论(0) 推荐(0)
摘要:遍历法: public class ReverseListNode { public ListNode Reverse(ListNode root){ ListNode Cur = root; ListNode Pre = null; ListNode headNode =null; while ( 阅读全文
posted @ 2018-10-09 16:32 思考的胖头鱼 阅读(179) 评论(0) 推荐(0)
摘要:简单工厂: 特点 1.它是一个具体的类,非接口抽象类。有一个重要的create()方法,利用if或者switch创建产品并返回。 2create方法通常是静止的,所以也称之为静态工厂。 缺点 1.扩展性差(我想增加一种面条,除了新增一个面条产品类,还需要修改工厂类方法) 2不同的产品需要不同额外参数 阅读全文
posted @ 2018-10-09 14:48 思考的胖头鱼 阅读(185) 评论(0) 推荐(0)
摘要:二分查找算法(JAVA) 1.二分查找又称折半查找,它是一种效率较高的查找方法。 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值 阅读全文
posted @ 2018-10-09 14:32 思考的胖头鱼 阅读(1458) 评论(0) 推荐(0)
摘要:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode EntryNodeOfLoop(ListNode pH... 阅读全文
posted @ 2018-10-07 12:05 思考的胖头鱼 阅读(165) 评论(0) 推荐(0)
摘要:快速排序,顾名思义,是一种速度快,效率高的排序算法。 快速排序,顾名思义,是一种速度快,效率高的排序算法。 快排原理: 快排原理: 在要排的数(比如数组A)中选择一个中心值key(比如A[0]),通过一趟排序将数组A分成两部分,其中以key为中心,key右边都比key大,key左边的都key小,然后 阅读全文
posted @ 2018-10-06 19:37 思考的胖头鱼 阅读(1404) 评论(0) 推荐(0)
摘要:递归: 非递归: 层序遍历: 非递归算法: 阅读全文
posted @ 2018-10-06 11:41 思考的胖头鱼 阅读(1919) 评论(0) 推荐(0)