- 博客(57)
- 收藏
- 关注
原创 多数元素(超级水王问题扩展)
给定一个长度为N的数组arr,和一个大于1的正整数K,如果有哪些数出现的次数大于N/K,就返回这些数要求:时间复杂度O(N) 额外空间复杂度O(K)思考:最多会有k-1个数
2022-04-20 22:13:15
366
原创 随机函数相关面试题详解
1.给你一个随机函数f,等概率的返回1-5的一个数组,这是你唯一可以使用的随机机制,如何实现等概率返回1-7中的一个数字2.给你一个随机函数,等概率返回a-b中的一个数字,这是你唯一可以使用的随机机制,如何等概率的返回c-d中的一个数字3.随机函数f,以p概率返回0,以1-p概率返回1,核心思想使用位运算1.对随机函数进行转化,目标是使能够产生0,1等概率2.确定目标有多少中可能性3.确定二进制数用长度...
2022-04-20 18:51:28
510
原创 数组子序列累加和求余数之后的最大值问题详解
给定一个非负的数组arr,和一个正数m,返回arr中所有子序列累加和对m求余数之后的最大值1.如果arr中每个数字不大,怎么做这道题?2.如果arr中m的值很小,怎么做这道题?3.如果arr的长度很短,但是每个arr中数字比较大并且m比较大?如何求解所有的子序列问题?...
2022-04-20 16:36:13
444
原创 字符串分类问题
如果两个字符串,所含有的字符种类完全一样,就算做一类,只有小写字母(a-z)组成的一批字符串,都放在字符类型的数组Stringp[] arr,返回arr中一共有多少类?长度:字符串的长度可以不一样,但是字符串的所含字母的类型个数必须一致“aa”,“a” 是一类,“baba”,“ba” 是一类1.计算每一个字符串的摘要2.放入到HashSet,HashSet.size()就是结果方式二:1.使用位运算来代替摘要,优化常数时间的套路:当看到算法题是(a-z)的小写字母的设定的时候,就知道hash表
2022-04-20 12:48:20
227
原创 滑动窗口技术-子串包含问题(顺序无关)
给定一个长度为m的aim的字符串,以及一个长度为n的字符串str,能否在str中找到一个长度为m的连续子串,这个子串刚好由aim的m字符构成,顺序无所谓,返回满足子串的起始位置,未找到返回-1
2022-04-20 11:45:37
323
原创 搜索二叉树后序遍历反序列化(常规思路(O(N^2)),二分思路o(n*O(N*lgN)))
1.根据二叉搜索树的后续遍历arr,序列化成一个树,并且返回头结点
2022-04-19 14:31:28
269
原创 shell编程基础-流程控制(if-else, 循环,定义函数)
1. if-else的判断格式 2. for/while循环的歌是 3. shell中函数的定义
2022-04-08 20:52:46
319
原创 并发编程之LockSupport详解以及应用(公平锁)
1.LockSupport基本使用2.LockSupport原理3.LockSupport的应用公平锁
2022-04-02 16:25:15
514
原创 线程池详解-工作线程管理
线程池为了掌握线程的状态并维护线程的生命周期,设计线程池内的工作线程Workerworker线程private final class Worker extends AbstractQueuedSynchronizer implements Runnable { // work持有的线程 final Thread thread; //初始化任务可以为null; Runnable firstTask;}work线程执行任务的模型如下:线程池需要
2022-04-01 20:12:20
565
原创 线程池的-任务执行机制
线程池的任务执行机制任务调度任务调度是线程池的主要入口(execute(Runnable r)),接下来任务如何执行都是有这个阶段决定的;所有的任务调度都是有execute方法完成,检查现在线程池的运行状态,运行的线程数,运行策略,决定接下来执行的流程,是直接申请线程执行,还是缓冲到队列中执行,亦或是直接拒绝该任务;执行过程如下:1.首先检查线程池的运行状态,如果不是RUNNING,则直接拒绝,线程池要保证在RUNNING状态下执行任务2.如果workCount < corePoolSiz
2022-03-30 19:25:25
1767
原创 线程池核心设计-总体设计
线程池的总体设计池化思想线程池的基本思想Java线程池是通过一种池化思想帮助我们管理线程而获取并发性的工具;线程池的核心实现类是ThreadPoolExecutor类,基于JDK1.8源码来分析java线程池的核心设计与实现;...
2022-03-28 13:05:55
337
原创 线程池-ExecutorService接口详解
1.ExecutorService接口介绍;2.管理终止的方法(shutdown shutdownNow)3.扩展Executor的submit方法(跟踪异步任务)
2022-03-27 14:30:37
476
原创 并发编程-生产者消费者-阻塞队列版本-详解
1.并发编程-生产者消费者-阻塞队列版本-详解2.回顾synchronzied,Lock版本的多生者-多消费者
2022-03-25 20:52:30
585
原创 判断链表是否是回文结构(反转链表方式,栈的方式,栈的优化方式,原地比较的方式)
1.对链表的回文结构判断进行总结2.逆序链表方式 空间复杂度O(n)3.栈的方式 空间复杂度O(n)4.栈的方式进行优化 空间复杂度O(n)5.原地比较的方式 空间复杂度O(1)
2022-03-24 19:28:19
1376
原创 并发编程-多生产-多消费-总结以及最终版本(生产一组,消费一组)
1.生产者-消费者模型 synchronized版本-Lock版本-LockCondition版本-最终版本2.扩展 生产一组,消费一族
2022-03-21 12:32:11
413
原创 并发编程-Lock版本(基础-进阶)-多生产者-多消费者模型
Lock实现多生产者-多消费者模型简单介绍一下Lock:Lock接口的出现替代了同步代码块或者同步函数,将同步的隐式锁操作变成显式的锁操作;同时也可以更加灵活,可以一个锁上增加多组监视器;Condition接口的出现代替了Object中的wait(),notify(),notifyAll()方法,将这些监视器方法进行了封装,变成了Condition监视器对象;有方法await(),signal(),signalAll();为什么要提供监视器对象?为了实现精准唤醒,只唤醒对方的线程,在进阶版代码中将
2022-03-21 11:56:23
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人