
递归
Huglight
这个作者很懒,什么都没留下…
展开
-
NowCoder 正则表达式匹配 递归
题意:给一个原串和一个模式串,’.‘表示匹配任意一个字符,’*'表示前面字符可以出现任意次,如"aaa"可由"a.a"或"ab *aa"匹配,求模式串是否匹配原串 思路:若某个位置没有".",后面也没有" * “,而两字符又不同,则不匹配,否则前后找下一字符。难点在处理有” * "的情况,因为可以匹配任意次,故可以不匹配或者匹配特定次数,而次数未知,故可先匹配一次,模式串位置不变,原串位置加1,递...原创 2020-02-10 22:03:05 · 144 阅读 · 0 评论 -
NowCoder 求1+2+3+...+n 递归
题意:求1加到n的和,要求不能用乘除,以及分支跳转循环如if else while for switch case等语句 思路:这里用到一个巧妙的特性:&& 判断前面不符合就不会执行后面的语句,这样可以在递归的时候不用if就可以判断是否到达结束条件 public class Solution { public int Sum_Solution(int n) { ...原创 2020-02-08 22:00:03 · 203 阅读 · 0 评论 -
NowCoder 平衡二叉树 递归
题意:给一棵二叉树,判断其是否平衡二叉树 思路:平衡二叉树两子树的最大高度差不能超过1,可以递归求两子树的最大高度,如果两子树高度差大于1,则树不平衡,若已知某子树不平衡,则不用继续递归直接返回结果 public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return solve...原创 2020-02-03 22:52:42 · 120 阅读 · 0 评论 -
NowCoder 数组中的逆序对 归并排序
题意:给一个数组,求出数组中存在的逆序对的个数,逆序对即两数中前面的数字大于后面的数字 思路:暴力枚举很简单,复杂度为O(n²),可以用归并排序的性质,归并后两个子数组中设前面为i,后面为j,若array[i]>array[j],则i到mid的数即为当前可知逆序对数(排序完后前面数组i到mid的数都比i位置的大,故排序前乱序时前面数组相对后面数组逆序对也有这么多),将所有子数组的逆序对统计即...原创 2020-02-02 19:08:13 · 143 阅读 · 0 评论 -
NowCoder 二叉搜索树的后序遍历序列 递归
题意:给一串序列,判断该序列是否某二叉树的后序遍历序列 思路:后序遍历最后一个节点为根节点,前面的都可以分成连续的两部分,一部分比根节点小,另一部分比根节点大,依次分块递归判断两部分是否连续即可 public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if (sequence ...原创 2020-01-30 15:48:59 · 178 阅读 · 0 评论 -
NowCoder 树的子结构 递归
题意:给两棵树A、B,问B是否是A的子结构,空树不是任何树的子结构 思路:最简单的是用递归深搜,判断当前两树结构是否相同,或者大树左右子树是否和小树相同即可 public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if (root2 == null || root1...原创 2020-01-27 21:13:22 · 145 阅读 · 0 评论 -
LeetCode 24.两两交换链表中的节点 递归
题意:给定一个链表,要求两两交换链表中相邻的两节点,比如1->2->3->4变为2->1->4->3 思路:最简便的方法就是递归,头结点的下一个节点是已经转换好的节点的头结点,之后再把原来头结点的下一节点接到头结点上即可 class Solution { public ListNode swapPairs(ListNode head) { ...原创 2020-01-04 09:54:35 · 199 阅读 · 0 评论