摘要: 统计连续出现的 0 和 1 出现的次数,保存到一个counts数组中,如00110110,对应的数组为{2,2,1,2,1},所能组成子串的个数为min{u,v},u和v分别代表0和1的个数或者1和0的个数。应该返回2+1+1+1=5 法1 class Solution { public int c 阅读全文
posted @ 2020-08-10 11:50 菜鸡A 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 这个层序遍历要求返回每层的节点,正常的BFS从队列中弹出一个节点后就判断其有没有左子树和右子树,所以直接用BFS实现的话无法分层输出。 需要记录每层的节点数目,增加一个for循环就可以了。 /** * Definition for a binary tree node. * public class 阅读全文
posted @ 2020-07-25 11:58 菜鸡A 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 可以想到,数组中会出现“断层”,直接遍历一次即可。不存在【1,2,3,4,5】旋转成【5,4,3,2,1】的情况。 暴力法(我感觉还行啊,为什么被叫暴力): class Solution { public int minArray(int[] numbers) { int n = numbers.l 阅读全文
posted @ 2020-07-22 10:13 菜鸡A 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1.层序遍历,一个队列存放节点,一个队列存放到当前节点的值。 2.递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * 阅读全文
posted @ 2020-07-07 14:07 菜鸡A 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 第一次在力扣上做树的题,理论明白了,递归还是有点难理解。 注释的代码是树的结构,题中默认的。 首先,二叉排序树的中序遍历是有序的,题中也是有序数组,这就巧了。如果以最中间的那个数为根节点,比它小的数在左子树,比它大的数在右子树。然后其左边又应该是一棵平衡二叉树,右边也是。至于为什么,有待研究。 /* 阅读全文
posted @ 2020-07-03 17:20 菜鸡A 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 容易想到的暴力解法:把数据都取出来排序,需要n2大小的数组存储 既然数组是有序的,把每一行看成一个有序数组,对这些数组进行归并排序,归并到第k个数为止。 看了题解,了解到优先级队列PriorityQueue可以用于实现归并排序,PriorityQueue底层是一个堆的结构。具体可参考这篇文章 刷算法 阅读全文
posted @ 2020-07-02 11:59 菜鸡A 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 法官的入度为N-1,出度为0。 class Solution { public int findJudge(int N, int[][] trust) { int indegree[] = new int[N+1]; int outdegree[] = new int[N+1]; int resul 阅读全文
posted @ 2020-06-05 10:23 菜鸡A 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 就是栈。用map存储括号类型,遇到右括号弹栈,不匹配为false。左括号压栈。 class Solution { HashMap<Character,Character> chars; public Solution(){ this.chars = new HashMap<Character,Cha 阅读全文
posted @ 2020-06-04 12:06 菜鸡A 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 非递减就是升序,只不过有些元素是重复的。 根据样例,上下对比一下,可以想到先排好序,然后一个一个对比,不一样的就是需要移动的。不是求移动步数,是求需要移动的元素个数。 桶排序,遍历所有桶,直到所有桶中都没有元素。 class Solution { public int heightChecker(i 阅读全文
posted @ 2020-06-03 10:21 菜鸡A 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 一看到井字棋游戏最先想到决策树,这个题是直接判断输赢。注意不是9个格子,是N*N个格子。那么第一步应该把一维数组放到二维数组中,否则无法遍历。 遇到X,转换成1。遇到O,转换成-1。否则为0 遍历二维数组的每一行,每一列,两条对角线。如果和为N,则输出"X",和为-N,则输出"O"。遍历时需要保存0 阅读全文
posted @ 2020-05-30 10:22 菜鸡A 阅读(740) 评论(0) 推荐(0) 编辑