每日三题提升计划
夜间传说
努力学习,天天向上!
展开
-
矩阵中的最长递增路径收获
矩阵中的最长递增路径class Solution { //上下左右方向: public int [][]dirc={{-1,0},{1,0},{0,-1},{0,1}}; public int dfs(int [][]matrix,int [][]f,int i,int j){ if(f[i][j]!=0) return f[i][j]; //对四个方向进行搜索,找最长的值,并为f[i][j]记录。 int原创 2021-10-04 11:37:57 · 89 阅读 · 0 评论 -
最小覆盖子串
收获与感想:java:整数最大值:Integer.MAXVALUE Charactermap.containsKey();获取哈希表的值:Map<Character,Integer> cnt =new HashMap<>();Map<Character,Integer> ori =new HashMap<>();public boolean cheak(){//表示当前条件是否满足最小子串的窗口之一。 for(char ch:ori.ke原创 2021-09-27 11:07:30 · 76 阅读 · 0 评论 -
2021-09-24
学了什么?第一,java优先队列的底层实现是一个数组。是一个完全二叉树。其中有pq.offer() pq.add()取队首,pq.peek() 删除最大值:qp.poll().优先队列里面的值可以用一个数组作为模板。其中需要重写比较函数PriorityQueue<int []>pq = new PriorityQueue<int[]>( new Comparator(){ public int compare(int[]pair1,int[]pair2){ retu原创 2021-09-24 21:40:25 · 83 阅读 · 0 评论 -
刷题刷刷刷
用 Rand7() 实现 Rand10()拒绝采样的问题,用一个随机数生成另一个随机数,可以用建立一张二维表,扩大数的范围,根据坐标均匀编排数字。填充每个节点的下一个右侧节点指针层次遍历基于广度优先搜索,它与广度优先搜索的不同之处在于,广度优先搜索每次只会取出一个节点来拓展,而层次遍历会每次将队列中的所有元素都拿出来拓展queue 队列的每一层都是可以先用size获取它的层数进行。全排列直观的想法是看每一个空可以填哪一个剩下的数。但其实可以在原来的数组出发,划分为左右已经填好的数,在一个指针的原创 2021-09-07 19:21:38 · 96 阅读 · 0 评论 -
每日三题day5/21
找前k个最小值可以用最大堆。建堆默认是利用数组前k个元素当作它们是最小,如果有比最大堆最大的元素更小的数,那么弹出堆顶,弹入元素。最后遍历堆的元素即可。class Solution: def smallestK(self, arr: List[int], k: int) -> List[int]: #建立一个最大堆 if k==0: return list() heap=[-arr[i] for i in range(原创 2021-09-03 21:13:27 · 70 阅读 · 0 评论