学渣菌的博客

穿梭在两个世界里的打字员 懒人创造世界

   

二叉树遍历

二叉树的遍历方法:先根遍历、中根遍历、后根遍历,见:《关于二叉树的前序、中序、后序三种遍历》 有二叉树如下: public static class TreeNode{ Tr

1053.交换一次的先前排列- Previous Permutation With One Swap

题目:1053.交换一次的先前排列 思路: 对于数组int[] A = [1,9,4,6,7]: 1、左边是高位,右边是低位; 2、替换后,左边被替换的数字势必变小 为了满足题意,使替换后的数字尽可能

300. 最长上升子序列

题目:300. 最长上升子序列 动态规划思路: 遍历计算,计算过的长度使用数组dp[]记录,使用计算过的结果计算新位置的长度 解体逻辑: 定义dp[],存储arr以对应元素为尾的字串长度 arr

动态代理之cglib实现

1、 CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 2、 用CGlib生成代理类是目标类的子类。 3、 用CGlib生成 代理类不需要接口

动态代理之JDK实现

在Java中java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口就可以生成动态代理对象。JDK提供的代理只能针对接口做代理。没

众数查找问题

有一个int型数组长度为n,其中某个元素个数占绝大多数,即大于n/2,如何在O(n)复杂度内找到这个元素。 即: 输入{1,1,2}输出1 输入{4,4,1,2,1,2,4}输出4 思路: 遍历数组,

AtomicXXX中的ABA问题

AtomicXXX可以通过CAS(Compare And Set)机制进行原子操作。 但是存在ABA问题。 举例: 线程T1想修改100为101, 而在T1发出compareAndSet指令之前,有T

快速排序

https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95 它的基本思想是 通过一趟排序将要

使用random5()实现random7()

https://www.jianshu.com/p/6d9b3e8df760 思路: 1、random5 只生成1、2、3、4、5,每个字符概率相同,1、2、3、4的概率相同,生成5时抛弃并重新生成,

归并排序&逆序对

https://baike.baidu.com/item/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 示例来源见链接. 归并操作(merge),也叫归并算法,指的是将两个