青杨风2199
青杨风2199
全部文章
分类
题解(38)
归档
标签
去牛客网
登录
/
注册
青杨风2199的博客
TA的专栏
37篇文章
0人订阅
《剑指Offer-Java题解》
37篇文章
1251人学习
全部文章
(共38篇)
剪绳子【Java版】
来自专栏
方法一:数学函数求导法 【总体思路】构造函数求导,得到:m=n/e (小数的情况下),也就是说尽量拆成一堆:2、3(最接近e的整数) 数学函数求导法:针对性规律result= f(m) = (n/m) ^m,设n为定值,m为自变量,f(m)为乘积结果。max{ f(m) }= max{ ln f(...
2021-07-15
1
534
矩阵中的路径【Java版】
来自专栏
【总体思路】(dfs+剪枝) x 多个起点 public class Solution { public boolean hasPath (char[][] matrix, String word) { boolean flag[][] = new boolean[matri...
2021-07-15
1
677
滑动窗口的最大值【Java版】
来自专栏
【总体思路】采用 双端队列ArrayDeque,两端巧妙删除/增加;达到O(N)时间。 import java.util.ArrayList; import java.util.ArrayDeque; //ArrayList有index->value的对应,而ArrayDeque只有值,没有下...
2021-07-15
1
628
数据流中的中位数【Java版】
来自专栏
【总体思路】设立一个大根堆、一个小根堆,还有一个奇偶标记。大根堆保存较小的半边,小根堆大的半边;入堆来回倒(以保证中位)、出堆类型转换 import java.util.PriorityQueue; //Java的PriorityQueue基于堆 //add()添加 poll()弹出顶端元素=&g...
2021-07-15
1
767
二叉搜索树的第k个结点【Java版】
来自专栏
方法一:双函数 //新建的void函数 用于修改全局变量res;主函数负责return public class Solution { private int count = 0;//全局(类)变量可以不初始化,int默认为0 //等价于private int count; pri...
2021-07-15
1
585
序列化二叉树【Java版】
来自专栏
1)序列化二叉树是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#) 2)反序列化二叉树是指:根据某种遍历顺序得到...
2021-07-15
3
766
链表中环的入口结点【Java版】
来自专栏
ps:题目不给修改val的值。(如果可以修改的话,直接在val标记就好) 方法一:双指针法(快指针2倍速) [最优解,证明是难点]上图分析如下: 如果慢指针slow第一次走到了B点处,距离C点处还有距离Y,那么fast指针应该停留在D点处,且BD距离为Y(图中所示是假设快指针走了一圈就相遇,为了...
2021-07-15
1
665
从尾到头打印链表【Java版】
来自专栏
1)递归方法(系统栈) import java.util.ArrayList; public class Solution { ArrayList<Integer> res = new ArrayList<Integer>(); //一定要在函数之前定义 p...
2021-07-07
1
528
字符流中第一个不重复的字符【Java版】
来自专栏
方法一:LinkedHashMap <Character, Integer> import java.util.LinkedHashMap; //必须要用LinkedHashMap,不能用HashMap/Map //因为LinkedHashMap的有序性(要求返回第一个char) pu...
2021-07-07
2
639
数组中重复的数字【Java版】
来自专栏
方法一:排序寻找法(最优) //【题目特殊条件】一个长度为n的数组里的所有数字都在0到n-1的范围内。 //所以想到:特殊条件下的排序。时间只需要O(n),而不是O(nlogn) //排序方法:【for+while双重循环】【交换 numbers[numbers[i]] 和 numbers[i]】 ...
2021-07-07
2
830
首页
上一页
1
2
3
4
下一页
末页