/**
* 39. 组合总和
* @author wsq
* @date 2020/10/04
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。
解集不能包含重复的组合。
示例 1:
输入:candidates = [2,3,6,7], target = 7,
所求解集为:
[
[7],
[2,2,3]
]
示例 2:
输入:candidates = [2,3,5], target = 8,
所求解集为:
[
[2,2,2,2],
[2,3,3],
[3,5]
]
链接:https://leetcode-cn.com/problems/combination-sum
*/
package com.wsq.huishuo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CombinationSum {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> targetList = new ArrayList<>();
/**
* 回溯法
* @param candidates
* @param target
* @return
*/
public List<List<Integer>> combinationSum(int[] candidates, int target) {
if(candidates.length == 0) {
return ans;
}
Arrays.sort(candidates);
findTargetList(candidates, 0, target);
return ans;
}
/**
* 寻找目标序列
* @param candidates
* @param target
*/
private void findTargetList(int[] candidates, int pos, int target) {
// TODO Auto-generated method stub
for(int i = pos; i < candidates.length; ++i) {
int tmpN = candidates[i];
if(tmpN == target) {
List tmpList = new ArrayList(targetList);
tmpList.add(tmpN);
ans.add(tmpList);
break;
}else if(tmpN < target) {
targetList.add(tmpN);
findTargetList(candidates, i, target - tmpN);
targetList.remove(targetList.size() - 1);
}else {
break;
}
}
}
public static void main(String[] args) {
int[] candidates = {2,3,6,7};
int target = 7;
CombinationSum cs = new CombinationSum();
cs.combinationSum(candidates, target);
}
}
相关推荐
电网加密芯片全解析:分类与功能
在电网数字化转型的浪潮中,数据安全和设备的身份认证变得愈发重要。加密芯片作为保障电网信息安全的核心部件,凭借独特的技术特性,在不同应用场景下发挥着关键作用,有力推动着智能电网的安全稳定发展。接下来,我们将对电网中常见的加密芯片展开分类介绍,并探讨其对应的功能。。
2020-04-10
OpenTCS打造移动机器人交通管制系统(四)
先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。 首先需要先明确下OpenTCS内核中的三个概念: 路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。 派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。 调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配...
Windows 10上Virtual Box安装Ubuntu16.04详细教程(2020)
Windows 10上Virtual Box安装Ubuntu16.04详细教程(2020)
C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南
本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。
从零开始:用Python实现AlphaZero五子棋AI(附完整代码)
本文详细介绍了如何从零开始使用Python实现AlphaZero五子棋AI。通过工程化实践,逐步构建蒙特卡洛树搜索(MCTS)、轻量化残差网络(ResNet)以及自博弈训练循环,并提供完整可运行的代码。文章旨在帮助开发者绕过复杂理论,聚焦实战,最终打造一个能够自我学习与对弈的智能体,是深度强化学习在游戏AI领域的一次完整项目实战。
Windows 10 1909 (Updated 2020-04-11)
Windows 10 商业版(含教育版、企业版、专业版、专业教育版、专业工作站版) SHA1: 7E62BA8BC2DCDFB970F5B77965F0D08D6228DA1A ed2k://|file|cn_windows_10_business_editions_version_1909_updated_april_2020_x64_dvd_5d3fcf2e.iso|5420953600|84...
VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别
本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。
2020-10-04总结
2020-10-04总结 这周开始认真刷题做比赛了。每次碰上不是很难但是又不会的题总想穿越回两年前给自己一巴掌。 这周打了一场CF,过了4道题。可惜只是个div3。不过做D题的思路对我启发还蛮大的。对于各种容器的一些应用又回顾了一遍。最后E题是一道DP的题。DP最近在我刷的题里频频出现。感觉DP可以出很多类型的题,学好博弈就去学DP。 周末学校队内组织了比赛。用的天梯赛的题目。做的十分拉跨。大一的时候能拿全分的题现在反而有一个点过不了,有些题目甚至都读不懂。补题的时候发现其实并没有特别难。只是自己太拉跨了而
大模型系列——Ollama-OCR 简明教程
Llama 3.2-Vision 是一个多模态大型语言模型,有 11B 和 90B 两种大小,能够处理文本和图像输入以生成文本输出。该模型在视觉识别、图像推理、图像描述和回答与图像相关的问题方面表现出色,在多个行业基准测试中优于现有的开源和闭源多模态模型。在本文中,我将介绍如何调用由 Ollama 运行的 Llama 3.2-Vision 11B 建模服务并使用实现图像文本识别 (OCR) 功能。
(建议收藏)2024最新 URL Scheme大全APP跳转界面地址更新中 ios快捷指令快捷方式链接跳转微信小程序必备autojs可用免root (可定制开发和提取URL Scheme 参数提取)
(建议收藏)2024最新 URL Scheme大全APP跳转界面地址更新中 ios快捷指令快捷方式链接跳转微信小程序必备autojs可用免root (可定制开发和提取URL Scheme 参数提取)
1966



被折叠的 条评论
为什么被折叠?



