剑指-10 斐波那契数列
思路根据出名的斐波那契公式实现 F(n) = F(n-1) + F(n-2)递归调用该题会超时,使用map存储计算结果会浪费空间class Solution { public int fib(int n) { if (n < 2) return n;// 使用三个变量记录f
每一个平凡的日常都是连续的奇迹
思路根据出名的斐波那契公式实现 F(n) = F(n-1) + F(n-2)递归调用该题会超时,使用map存储计算结果会浪费空间class Solution { public int fib(int n) { if (n < 2) return n;// 使用三个变量记录f
思路对称的定义,根节点相等,左右子树对称,因此可以使用递归遍历递归截止条件1)根节点值相等3)使用两个指针,一个左子树遍历,一个右子树遍历,如果这两个指针始终相等,则表示左右子树是对称的/** * Definition for a binary tree node. * public class T
思路递归翻转左右子树,则可以获取翻转树递归终止条件1)输入的节点为null2)左右子树交换结束/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;
题目地址思路判断子结构,也就是说可能存三种情况完全和树相同和树的右子树相同和树的左子树相同递归判断/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left
题目地址思路同上一题的思路,层序遍历+队列确认长度遍历相对上一题多了一个奇偶判断,选择左/右顺序输出,通过数组头插法或者尾插法就可以实现调整输出顺序/** * Definition for a binary tree node. * public class TreeNode { * int
题目地址思路还是层序遍历,但是相对于上一题有所变化。每层的结果单独打印成一行需要记录每层的元素个数,或者可以记录上一行元素个数根据观察,队列每次处理一层的节点前,队列中保留的是该层的所有节点,因此可以在处理队列节点前,通过队列的长度获取上一层的元素节点数目/** * Definition for a
题目地址思路:属于二叉树的层序遍历二叉树常见遍历方式:前序遍历,中序遍历,后序遍历,层序遍历等层序遍历需要保证每层遍历的顺序性,每层节点的先后顺序。因此可以利用队列来保存每层节点的顺序性(这里需要记一下队列常用api,add,poll,peek)
思路1因为已经是排序的,只要直接遍历就可以了,找到第一个target后开始计数,统计有几个相同值class Solution { public int search(int[] nums, int target) { if (nums.length == 0) return 0;
题目地址思路1(时间复杂度过高,朴素思路):使用分格子的思想,求出当格子为1、2、3、4...max(max = 字符串长度)时是否存在回文子串如果当格子中的字符串是回文的时候,看看是否需要更新回文子串最大值class Solution { public String longestPalin
思路字符串转为char数组(注意api是toCharArray)遍历数组,遇到空格' '转成%20追加到字符串中(' '占一位,%20占三位) public String replaceSpace(String s) { char[] chars = s.toCharArray();