首页 > 编程语言 >程序员面试金典---3

程序员面试金典---3

时间:2023-04-10 23:37:18浏览次数:34  
标签:right return 金典 sum --- 程序员 root 节点 left

首个祖先

  • 方法一:递归

    三种情况:

    • p、q分别在根节点的左右子树中,那么祖先就是root
    • p、q均位于根节点的左子树或右子树中,那么祖先在root.left或者root.right中递归。
    • p、q的其中一个节点是根节点,祖先为root
    var lowestCommonAncestor = function(root, p, q){
        // p、q的其中一个节点是根节点,祖先就是root
        if(!root || root === q || root === q){
            return root
        }
    	// p、q在左子树或者右子树上
        let left = lowestCommonAncestor(root.left, p ,q)
        let right = lowestCommonAncestor(root.right, p ,q)
        // p、q其中一个是根节点
        if(left && right) return root
        // 可能在左子树或者右子树
        return left ? left : right
    }
    

求和路径

  • 回溯方法:

直接上代码:

var pathSum = function(root, sum) {
    // 如果为空
    if(!root) return 0;
    // 递归这个节点 + 递归右节点 + 递归左节点
    return dfs(root, sum) + pathSum(root.right, sum) + pathSum(root.left, sum)
    function dfs(root, sum){
        if(!root) return 0;
        // 如果相等于节点,直接递归右节点
        if(root.val === sum){
            return 1 + dfs(root.left, sum - root.val) + dfs(root.right, sum - root.val)
        }
        // 不相同,返回递归左节点和右节点
        return dfs(root.left, sum - root.val) + dfs(root.right, sum - root.val)
    }
};

标签:right,return,金典,sum,---,程序员,root,节点,left
From: https://www.cnblogs.com/dgqp/p/17304717.html

相关文章

  • 今天课上实现了一个简陋的web项目-河北科技政策查询系统
    test.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><......
  • 2023-04-10 网络流和最大流问题
    网络流和最大流问题1网络流和最大流问题阐述网络流基本概念网络流图中,从源点出发,在满足每条边容量限制的条件下,汇点t最多能接收多少流量s:sourcet:target网络流需要满足的限制容量限制平衡限制:除了源点s和汇点t,对于每一个点,流入量等于流出量从源点s流出的流量,一定......
  • go语言学习-gin框架学习笔记-1
    gin是一个golang的微框架,封装比较优雅,api友好,源码注释比较明确,具有快速灵活,容错方便等特点,对于golang而言,web框架的依赖远要比python,java之类的要小,自身的net/http足够简单,性能也非常不错。安装goget-ugithub.com/gin-gonic/gin//安装import"github.com/gin-goinc/gin"//......
  • 区块链学习(9)-自定义修饰词modifier
    在Solidity中,修饰词(modifier)是一种代码重用和逻辑抽象的方法,用于修改函数的行为。它可以在函数执行前进行预处理(如检查条件、权限等),或在函数执行后进行后处理。修饰词在智能合约中非常有用,尤其是用于访问控制、状态检查和重入保护等场景。修饰词定义和使用:要定义一个修饰词,需要使用......
  • 全志SDK - 1. 系统编译
    目录1.准备工作1.1下载SDK1.2SDK解压2.SDK编译2.1系统编译2.2编译boot2.3编译内核2.4编译应用程序2.4.1方法12.4.2方法23.系统烧录1).下载(提取码:708u)并安装PhoenixSuit软件2).选择驱动:(第一次使用时)3).将需要烧录的板子通过串口线(带adb),将电脑和板子进行连接,连接......
  • Java8 - sum求和,将 List 集合转为 Map,key去重(groupingBy),sorted排序
    Java8-sum求和,将List集合转为Map,key去重(groupingBy),sorted排序packagecom.example.core.mydemo.java8;publicclassGoodsPriceDTO{privateIntegerid;privateStringgoodName;privateIntegeramount;//重写toString方法,System可以打印输出......
  • C-枚举类型
    枚举(enum)enum枚举类型名称{枚举=初始值,...}不设置初始值时,第一个默认为0,后续比前一个元素大1.创建与使用enumStatus{low=1,middle=2,high=3};intmain(){enumStatuss1=low;printf("%d\n",s1);//1switch(s1){......
  • 读论文2-Line Exhaustive Searching for Real-Time Vanishing Point Estimation in Ma
    曼哈顿世界中实时消失点估计的2行穷尽搜索1.Abstract本文介绍了一种非常简单和高效的算法,用于在曼哈顿世界中的校准图像上估计1、2或3个正交消失点。与传统方法使用1、3、4或6条线生成消失点假设不同,(基本方法)我们建议使用2条线获取第一个消失点v1,然后在等效球面上v1的大圆上均匀取......
  • JAVA基础-StringUtils
    依赖<!--commons--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></dependency>举例importorg.apache.commons.lang......
  • 51 openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载
    51openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载51.1安装配置本地yum源,详细信息请参考《openEuler22.03-LTS搭建repo服务器》清除缓存。#dnfcleanall例如示例命令如下:[root@superman-21~]#dnfcleanall36filesremoved[root@superman-21~]#......