摘要: 八股 快排 快排本质: 一次操作,找到某个元素最终定位。 一句话讲清楚: 只用维护一个变量j表示小于区间用于分界,大于不操作,小于的话就交换并加j 等于说在队首是不动的,两个区间内的不断交换而已 归并 本质: 合并两个有序数组。 堆排序 希尔排序 阅读全文
posted @ 2021-09-15 12:27 常熟阿诺 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 傻逼才用Arrays.sort,用了就去当保安吧 思想:快排每次都会左右分区,保证选到的元素位置不再变。使用这个思想,下标如果刚好对上,那就说明找到了。 class Solution { public int findKthLargest(int[] nums, int k) { //按照正序来 d 阅读全文
posted @ 2021-09-15 12:23 常熟阿诺 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 注解并不是实现一个接口 它有自己的关键字@interface 可以看作是注释,但注释是给程序员看的,注解是给程序看的 宏观理解 注解肯定由两部分组成: 一个是自己携带的信息,就像给人衣服后面贴张纸,上面写着我是猪。不然光贴个标签也没用 第二个就是规范,可以作用在哪,生效范围之类的,这个叫元注解。 只 阅读全文
posted @ 2021-09-14 16:30 常熟阿诺 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 一直觉得这个很恶心 和注解一样 完全不符合类的规范 用起来就稀里糊涂的 其实改变思维就好了,取出来的时候当作一个静态变量就好很多 难理解的点就是就是生成的时候,apple不需要"" 可以这么想 一般是Fruit apple = new Fruit(a,b,c) 这里不过是变成 apple(a,b,c 阅读全文
posted @ 2021-09-14 12:52 常熟阿诺 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 有这么个困惑,开启线程不都是继承Thread或重写runnable吗?为什么我是直接new的?这和new A(100)有什么区别?A(100)存的是变量啊为什么这里是'函数'? new Thread(()->{ System.out.println(666); }).start(); 这里的本质是相 阅读全文
posted @ 2021-09-14 07:44 常熟阿诺 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 8 初始容量为16 负载因子0.75 每次扩容翻倍为2n rehash到og或og+n的坑位 求坑位 有两步: 修改hash:先对hash值右移16位,为了更散列 ((h = key.hashCode()) ^ (h >>> 16)) 由于tab.length肯定是远远小于hash值的,所以位运算的 阅读全文
posted @ 2021-09-13 17:36 常熟阿诺 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 比AtomicInteger快,但没那么准 主要用到的参数: base,cells数组,cellsBusy有无锁,uncontended竞争过,各种cas public void add(long x) { //牛逼啊可以修改了 哈哈 Cell[] as; long b, v; int m; Cel 阅读全文
posted @ 2021-09-13 17:35 常熟阿诺 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 集合 Collection和map是同级的,Collection实现了Iterator接口 序列化 Serilization 阅读全文
posted @ 2021-09-13 10:49 常熟阿诺 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 虽然说是分治,但本质还是语义。语义永远是第一,分治的话考虑相对位置就完事了 https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/solution/yi-pian-ti-j 阅读全文
posted @ 2021-09-12 16:04 常熟阿诺 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 必考,妈的数的题目都是给你两个序列让你自己构建的,不会就去当保安 阅读全文
posted @ 2021-09-12 14:43 常熟阿诺 阅读(11) 评论(0) 推荐(0) 编辑