当前位置: 首页 > news >正文

Leetcode 39 组合总和

题意理解:

        一个 无重复元素 的整数数组 candidates 和一个目标整数 target    

        从candidates 取数字,使其和== target ,有多少种组合(candidates 中的 同一个 数字可以 无限制重复被选取

        这道题和之前一道组合的区别:这道题允许重复的数字

解题思路

        组合问题——>递归

        这道题特殊的地方,对组合内数字的和做了要求,而不是个数,一开始并不确定树的深度,组合的大小是不定的。

1.暴力回溯+剪枝优化

class Solution {List<List<Integer>> result=new ArrayList<>();LinkedList<Integer> path=new LinkedList<>();int sum=0;public List<List<Integer>> combinationSum(int[] candidates, int target) {backtracking(candidates,target,0);return result;}public void backtracking(int[] candidates,int target,int index){//结果收集if(sum==target){result.add(new ArrayList<>(path));return;} else if (sum>target) {//剪枝return;}//遍历分支for(int i=index;i<candidates.length;i++){path.add(candidates[i]);sum+=candidates[i];//递归backtracking(candidates,target,i);//回溯path.removeLast();sum-=candidates[i];}}
}

2.分析

时间复杂度:O(n\times 2^{n})

        n个位置,每个位置有两种可能选或不选。

        时间复杂度和树的深度有关,是所有可行解之和

空间复杂度:O(n)

http://www.lryc.cn/news/256234.html

相关文章:

  • Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库
  • MySQL七 | 存储引擎
  • 网上下载的pdf文件,为什么不能复制文字?
  • Linux下apisix离线安装教程
  • 基于STM32 + DMA介绍,应用和步骤详解(ADC多通道)
  • openGauss学习笔记-144 openGauss 数据库运维-例行维护-慢sql诊断
  • 计算机毕业设计springboot+ssm停车场车位预约系统java
  • 打破常规思维:Scrapy处理豆瓣视频下载的方式
  • 系列学习前端之第 2 章:一文精通 HTML
  • SCSS Module 这样处理配置和使用太赞了
  • 【Unity动画】Unity 2D动画创建流程
  • 【算法每日一练]-图论(保姆级教程篇12 tarjan篇)#POJ3352道路建设 #POJ2553图的底部 #POJ1236校园网络 #缩点
  • Python数据科学视频讲解:数据挖掘与建模的注意事项
  • unity | 动画模块之循环滚动选项框
  • TinyMPC - CMU (卡耐基梅隆大学)开源的机器人 MPC 控制器
  • C++ 对象的初始化和清理:构造函数和析构函数
  • Tmux中使用Docker报错 - 解决方案
  • 如何在WordPress中批量替换图片路径?
  • el-pagination 纯前端分页
  • 基于springboot的校园二手市场
  • 【开源】基于Vue和SpringBoot的在线课程教学系统
  • Mysql分布式集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上
  • 身份认证技术
  • Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解
  • 基于Spring Boot的水产养殖管理系统
  • LCR 090. 打家劫舍 II(leetcode)动态规划
  • 【小沐学Python】Python实现语音识别(Whisper)
  • Nginx负载均衡实战
  • Redis skiplist源码解析(支持范围查询)
  • MVSNeRF:多视图立体视觉的快速推广辐射场重建(2021年)