zoukankan      html  css  js  c++  java
  • Day 23

    第96题:

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?(来自LeetCode)

    1、题目相当于给了n个数(1……n),然后使用这n个数来组成二叉树;

      其实很容易就像得到就是用n个数里面的每个数字来作为根节点计算它组成的二叉树个数;

      (这里可以知道sum[0]=1,sum[1]=1)

      这里可以看得出思想是递归往下的,例如给一个(1、2、3、4、5);

      我们此时用3作为根节点,然后它的左子树一定是由(1、2)两个节点组成

                      右子树一定是由(4、5)两个节点组成

      我们就可以利用dp数组或者递归的方式来将两个节点组成的二叉搜索树个数存储起来;

      一直左右子树都是两个节点组成的二叉树,两个节点组成的树个数都是两个;

      那么就得出根节点为3,节点数为5组成的二叉搜索树个数是4(2*2)个;

      这样依次就可以得出每个数作为根节点组成的二叉树个数了;

      最终得出结果(遍历的时候就可以直接将结果累加起来,最终的sum[n]就是所需要的总数)

      

      下面时递归写法

      

    第53题:

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。(来自LeetCode)

    1、其实就和插入排序一样,将数组的第一个元素作为最终解;

      然后将后面的元素依次加入最终解,判断每一步加的时候最终解与之前的最终解比较,去大的那个就可以了。

      

    2、下面是动态规划,思想都差不多。

      

  • 相关阅读:
    【LInux】查看Linux系统版本信息
    【Linux】常用命令,持续更新
    【Linux】rpm常用命令及rpm参数介绍
    【CentOS】设置服务开机自动启动
    查看所使用的Linux系统是32位还是64 位的方法
    spring中@param和mybatis中@param使用区别
    Linux下Mycat安装配置和使用
    CentOS 7下MySQL服务启动失败的解决思路
    java的排序算法
    File 操作
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13311226.html
Copyright © 2011-2022 走看看