摘要: 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 解题思路:利用与或符号,模拟位的加法与进位。 位的异或就是当前位的加法,但是没有办法算进位,所以,需要通过位与和左移来算进位,如果两个都是1,那么进位才是1。 为什么负数也能适用呢? 以 9 + (- 阅读全文
posted @ 2020-11-14 20:52 lippon 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 leetcode 解题思路:如何不用上面的条件判断语句,还是能判断传入参数的大小呢?这里就可以利用逻辑与和或的运算规则。 逻辑与 && 当运算符前面的条件为假, 阅读全文
posted @ 2020-11-14 20:22 lippon 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 leetcode 解题思路:约瑟夫 阅读全文
posted @ 2020-11-14 16:58 lippon 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 leetcode 解题思路:采用单调队列的思想,队列中应该是单调递减的,大的值先出队列,这样,每次在取滑动窗口的最大值的时候,就取队首元素即可。 单调队列入队操作 这个和单调栈差不多,当前元素和队尾元素进行比较,如果队尾元 阅读全文
posted @ 2020-11-14 16:06 lippon 阅读(123) 评论(0) 推荐(0) 编辑
摘要: Executor框架简介 从JDK5开始,把工作单元和执行机制分离开来了,工作的单元包括Runnable和Callable,执行机制就是由Executor框架提供。 Executor两级调度模型 HotSpot虚拟机将Java线程映射为操作系统的线程。 在上层,Java多线程程序将应用分解为多个任务 阅读全文
posted @ 2020-11-14 11:21 lippon 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 线程池的作用 降低资源消耗。重复利用已有线程,减少线程的创建和销毁造成的消耗。提高响应速度。当有任务需要处理的时候,就不用再花费重新创建线程的时间了。提高线程的可管理性。不合理利用线程,会浪费资源,影响系统稳定,线程池可以对线程进行统一分配、调优和监控。 线程池的实现原理 线程池由两种觉得组成:多个 阅读全文
posted @ 2020-11-14 10:12 lippon 阅读(61) 评论(0) 推荐(0) 编辑