手撕代码
文章平均质量分 50
基于面试常见的代码题目
_wdk
这个作者很懒,什么都没留下…
展开
-
打印以及构建螺旋矩阵Java
LC刷题记,图一乐,高频题。螺旋矩阵两题LeetCode-54.螺旋矩阵(顺时针打印)LeetCode-59.螺旋矩阵Ⅱ(顺时针构建)LeetCode-54.螺旋矩阵(顺时针打印)给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11原创 2021-03-16 09:07:09 · 296 阅读 · 0 评论 -
快速幂Java实现
Java快速幂实现lc刷题看见的,算法并非原创,写的很简洁。因为自己写的普通迭代碰到了阴间测试用例这里放一种很好理解的快速幂算法: public double myPow(double x, int n) { double result = 1.0; for (int i = n; i != 0; i /= 2, x *= x) {//为偶数时不计算 两倍扩大底数 指数缩小为一半 if (i % 2 != 0) {//相当于求pow(2,10)有2*2*2*原创 2021-03-09 11:51:38 · 280 阅读 · 0 评论 -
栈和队列的相互实现(练习自用)
栈和队列1.用栈实现队列2.用队列实现栈1.用栈实现队列栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个栈的栈顶压入第二个栈,但是如果第一个栈也空了,那就说明所有元素都输出来了public class StackQueue { /** * 栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个原创 2020-10-09 16:57:28 · 179 阅读 · 0 评论 -
面试常见五种排序算法
手撕代码准备1.冒泡排序2.选择排序3.插入排序4.快速排序5.归并排序1.冒泡排序思路:两两交换,大的放在后面,第一次排序后最大值已在数组末尾。因为俩俩交换,需要n-1趟排序(比如10个数,需要9趟排序)代码实现要点:两个for循环,外层循环控制排序的趟数,内层循环控制比较的次数。空间复杂度O(1) 时间复杂度O(n²)稳定性:稳定public class 冒泡排序 {//空间复杂度O(1) 时间复杂度O(n²) public static void main(String[] a原创 2020-08-14 13:36:18 · 293 阅读 · 0 评论 -
有关多线程的手撕代码(Java)
有关多线程的手撕代码1.使用多线程循环输出ABCD1.1.通过自旋暴力实现1.2.通过Condition有序执行2.生产者消费者简单模型1.使用多线程循环输出ABCD1.1.通过自旋暴力实现通过线程池(规范禁止显示的创建线程)以及加锁来实现循环输出ABCD。public class 循环输出ABCD { //使用java方法获得电脑核心数,用来设置线程池 static final int core=Runtime.getRuntime().availableProcessors();原创 2020-08-14 10:04:08 · 493 阅读 · 0 评论 -
HashMap源码阅读jdk1.8(dark)
说明:终于还是开始整理源码了。为了保证客观性和可读性,大部分代码采用截图和文字注释的形式。只整理了重要方法。一些问题的解释放在最后。HashMap(jdk1.8)1.默认参数1.1.默认大小1.2.最大容量1.3.填充因子(扩容阈值)1.4.链表转换为红黑树时的结点数目1.5.红黑树转换回链表的结点数目1.6.发生红黑树转换的最小大小1.7.基本构成:Node结点(1.7版本应为Entry结点)1.8.基本结构:table数组2.基本方法2.1.hash的实现2.2.基本构造方法2.3.get()以及g原创 2020-06-17 20:04:38 · 362 阅读 · 1 评论 -
Java单例的实现和分析(双重校验锁的破坏)
设计模式:单例模式1.基本概念2.代码实现2.1.饿汉式(即时创建对象)2.2.懒汉式(使用时才创建对象)2.2.1.线程不安全的懒汉式2.2.2.线程安全的懒汉式2.3.final实现方式(了解)3.双重校验锁(DCL,即double-checked locking)3.1.DCL代码实现3.2.使用volatile的原因(禁止指令重排序)1.基本概念目的: 保证类在内存中只有一个对象,可以直接访问,不需要实例化该类的对象注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3原创 2020-05-17 22:50:38 · 615 阅读 · 0 评论