首页 > 其他分享 >panghu week01 总结笔记

panghu week01 总结笔记

时间:2023-12-23 17:11:44浏览次数:33  
标签:pathSum week01 target int res 笔记 candidates path panghu

Algthrom:
组合总和:

func combinationSum(candidates []int, target int) [][]int {
    res := make([][]int,0)
    path := make([]int,0)
    dfs(candidates,target,0,path,&res)
    return res
}

func dfs(candidates []int,target int,pathSum int,path []int, res *[][]int) {
    // terminator
    if pathSum > target{
        return 
    }
    
    if pathSum == target {
        temp := make([]int,len(path))
        copy(temp,path)
        *res = append(*res,temp)
        return
    }

    
    for i := 0;i < len(candidates);i++ {
        // current
        pathSum += candidates[i]
        path = append(path, candidates[i])
        dfs(candidates,target,pathSum,path,res)
        pathSum -= candidates[i]
        path = path[:len(path)-1]
    }
}

有重复元素,需要对元素进行去重 自己想当然的以为需要进行对数组进行排序然后 再 for 循环里面加上 if i > 0 && nums[i] == nums[i-1] continue 的判断,结果还是错了

真正错的地方是需要 dfs(i, candidates,target,pathSum,path,res) 这里 dfs(i) 的,其实这里真正脑子里面需要有一颗回溯树,然后需看这个树是怎么遍历和执行的,细节还是挺魔鬼的

func combinationSum(candidates []int, target int) [][]int {
    res := make([][]int,0)
    path := make([]int,0)
    dfs(0, candidates,target,0,path,&res)
    return res
}

func dfs(start int, candidates []int,target int,pathSum int,path []int, res *[][]int) {
    // terminator
    if pathSum > target{
        return 
    }

    if pathSum == target {
        temp := make([]int,len(path))
        copy(temp,path)
        *res = append(*res,temp)
        return
    }

    
    for i := start;i < len(candidates);i++ {
        // current
        pathSum += candidates[i]
        path = append(path, candidates[i])
        dfs(i, candidates,target,pathSum,path,res)
        pathSum -= candidates[i]
        path = path[:len(path)-1]
    }
}

TIps:
最近在看 极客时间的 Spring 常见编程错误50例
为什么要看Spring呢,前段时间是去支援java项目组,目前在做 java 开发的项目了,所以想系统了解一下spring 相关的知识,因为你看框架,感觉有点云里雾里的,所以就想找门课动手去操作一下,然后去实践,所以开始看起来了

Spring 核心概念:
Bean 的创建、自动注入、AOP

Spring MAP 工厂:

public class BeanFactory { 
    private Map beanMap = new HashMap<>();
     public Bean getBean(String key){ 
    return beanMap.get(key) ;
     }
}

找到Bean 以后装配给其他对象,这就是依赖查找、自动注入的过程了

有的需要实例化Bean,有的不需要,怎么区分的呢?
通过 扫描器 AnnotationScan 去扫描哪些需要实例化Bean

怎么创建Bean:

通过反射进行创建:

AOP:
扫描注解,根据注解生成规则

为什么要开始写 panghu 笔记呢:
因为还是觉得学习和日常总结应该放到平时,不断的积累,所以想写一下这个panghu 笔记

还有一些需要学习和需要了解的知识
Java reactor 是什么?
Java spring 怎么写单元测试,这些疑问在后面慢慢完善

标签:pathSum,week01,target,int,res,笔记,candidates,path,panghu
From: https://www.cnblogs.com/zhangpengfei5945/p/17923323.html

相关文章

  • Python数据科学手册笔记:IPython
    目录Ipython帮助文档用符号?来查来文档用??来获取源代码补全方法利用tab利用*加?来补全Ipython快捷键Ipython魔法命令粘贴代码块执行外部代码计算代码运行时间内存分析魔法函数帮助错误和调试控制异常:%xmode调试模型:%debug输入输出历史禁止输出历史输入Ipython和shell命令Ipyth......
  • thinkPhp的学习笔记(一)
    1.A()用于实例化其他控制器的$obj=A('Test');$obj->test1();等同于$obj=newTestController();$obj->test1();2.C()C('配置的名称')用来获取配置信息。3.R()类似于A(),不同的是R()函数在实例化控制器的时候把操作方法一起传递过去,省略了方法的调用。R('Test/test1');4.M(),D......
  • 多项式(Poly)笔记
    开头先扔板子:多项式板子们定义多项式(polynomial)是形如\(P(x)=\sum\limits_{i=0}^{n}a_ix^i\)的代数表达式。其中\(x\)是一个不定元。\(\partial(P(x))\)称为这个多项式的次数。多项式的基本运算多项式的加减法\[A(x)=\sum_{i=0}^{n}a_ix^i,B(x)=......
  • 欧拉定理 & 扩展欧拉定理 笔记
    欧拉函数欧拉函数定义为:\(\varphi(n)\)表示\(1\simn\)中所有与\(n\)互质的数的个数。关于欧拉函数有下面的性质和用途:欧拉函数是积性函数。可以通过这个性质求出他的公式。\(f(p)=p-1\)。很显然,比质数\(p\)小的所有数都与他互质。\(f(p^2)=p\times......
  • 一次线性方程组 高斯消元笔记
    高斯消元原理高斯消元用来解如下形式的方程组:\[\begin{cases}a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\\a_{2,1}x_1+a_{2,2}x_2+\cdots+a_{2,n}x_n=b_2\\\cdots\\a_{n,1}x_1+a_{n,2}x_2+\cdots+a_{n,n}x_n=b_n\end{cases......
  • 扩展中国剩余定理(Excrt)笔记
    扩展中国剩余定理(excrt)本来应该先学中国剩余定理的。但是有了扩展中国剩余定理,朴素的CRT就没用了。扩展中国剩余定理用来求解如下形式的同余方程组:\[\begin{cases}x\equiva_1\({\rmmod}\b_1)\\x\equiva_2\({\rmmod}\b_2)\\...\\x\equiva_n\({\rmmod}\b_......
  • PySide6学习笔记(一)VSCode配置
    vscode配置(windows)在vscode中安装Python与QTforPython和coderunner插件(推荐)   Python与QTforPython插件开发PySide必备coderunner(可以右键运行py文件)安装PySide6pipinstallPySide6配置QTforpython插件 点击插件设置-拓展设置找到......
  • openGauss学习笔记-169 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用
    openGauss学习笔记-169openGauss数据库运维-备份与恢复-导入数据-更新表中数据-使用DML命令更新表openGauss支持标准的数据库操作语言(DML)命令,对表进行更新。169.1操作步骤假设存在表customer_t,表结构如下:CREATETABLEcustomer_t(c_customer_skinteger,......
  • python自动化学习笔记5-----allure测试报告
    1、运行测试报告 2、allure注解的使用  3、优化测试报告之添加对应的标签 4、注解的使用     5、yaml文件格式 6、更改logo(1)allure目录下找到allure.yml的文件,增加插件    (2)在插件目录下添加要展示的图片    (3)修改styles.cs......
  • python自动化学习笔记6-----jekins环境搭建及使用
        msi版本安装后,要去电脑服务里面设置为自启动,否则重启电脑后使用不了。  web自动化1、实现linux部署jekins,window运行自动化代码,不在同一个机器上运行在执行机(自己的电脑上)访问jekins网址进行相应设置        运行后,进行连接,连接成功后,小......