LeetCode回溯算法
2021/9/20 17:56:57
本文主要是介绍LeetCode回溯算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. leetcode 77组合
//给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
模板一,利用used数组
List<List<Integer>> ans = new LinkedList<>(); public List<List<Integer>> combine(int n, int k) { backTrace(n, k, 0, new LinkedList<>(), new boolean[n + 1]); return ans; } private void backTrace(int n, int k, int count, LinkedList<Integer> tmp, boolean[] used) { if (count == k) { ans.add(new LinkedList(tmp)); return; } for (int i = 1; i <= n; i++) { if (!used[i]) { used[i] = true; tmp.addLast(i); backTrace(i, k, count + 1, tmp, used); tmp.pollLast(); used[i] = false; } } }
模板2:不利用used数组,利用下标。
List<List<Integer>> ans = new LinkedList<>(); public List<List<Integer>> combine(int n, int k) { backTrace(n, k, 0, 1, new LinkedList<>()); return ans; } private void backTrace(int n, int k, int count, int start, LinkedList<Integer> tmp) { if (count == k) { ans.add(new LinkedList(tmp)); return; } for (int i = start; i <= n; i++) { tmp.addLast(i); backTrace(n, k, count + 1, i + 1, tmp); tmp.pollLast(); } }
这篇关于LeetCode回溯算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南