回溯-重新安排行程

ops/2024/9/22 20:37:42/

1.排序

Collections.sort(list,(o1, o2)-> o1.get(0).compareTo(o2.get(0)));

2.返回值

3.往集合添加元素

Arrays.asList(元素)

 List<List<String>> list = new ArrayList<>();List<String> path = new ArrayList<>();// 将[["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]加入list中List<String> entry1 = new ArrayList<>(Arrays.asList("JFK", "SFO"));List<String> entry2 = new ArrayList<>(Arrays.asList("JFK", "ATL"));List<String> entry3 = new ArrayList<>(Arrays.asList("SFO", "ATL"));List<String> entry4 = new ArrayList<>(Arrays.asList("ATL", "JFK"));List<String> entry5 = new ArrayList<>(Arrays.asList("ATL", "SFO"));list.add(entry1);list.add(entry2);list.add(entry3);list.add(entry4);list.add(entry5);

4.path为路线经过机场数,list为机票数,四张机票会经过5个机场

if (path.size() == tickets.size() + 1) {res = new LinkedList(path);return true;}

5.整体代码

class Solution {private LinkedList<String> res;private LinkedList<String> path = new LinkedList<>();public List<String> findItinerary(List<List<String>> tickets) {Collections.sort(tickets, (a, b) -> a.get(1).compareTo(b.get(1)));path.add("JFK");boolean[] used = new boolean[tickets.size()];backTracking((ArrayList) tickets, used);return res;}public boolean backTracking(ArrayList<List<String>> tickets, boolean[] used) {if (path.size() == tickets.size() + 1) {res = new LinkedList(path);return true;}for (int i = 0; i < tickets.size(); i++) {if (!used[i] && tickets.get(i).get(0).equals(path.getLast())) {path.add(tickets.get(i).get(1));used[i] = true;if (backTracking(tickets, used)) {return true;}used[i] = false;path.removeLast();}}return false;}
}


http://www.ppmy.cn/ops/111912.html

相关文章

编译 Android 11源码

参考小米6 lineageos官方编译文档&#xff1a;https://wiki.lineageos.org/devices/sagit/build 单独编译 framework 以LineageOS18.1&#xff08;Android 11&#xff09;为例&#xff1a; 1、在源码根目录执行&#xff1a; make framework-minus-apex 2、用生成的framewo…

第L6周:机器学习-随机森林(RF)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 1.什么是随机森林&#xff08;RF&#xff09; 随机森林&#xff08;Random Forest, RF&#xff09;是一种由 决策树 构成的 集成算法 &#…

Git+Jenkins 实战(一)(Practical Use of Git+Jenkins Part 1)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

web开发 之 HTML、CSS、JavaScript、以及JavaScript的高级框架Vue(学习版2)

一、前言 接下来就是来解决这些问题 二、 Ajax 1.ajax javscript是网页三剑客之一&#xff0c;空用来控制网页的行为的 xml是一种标记语言&#xff0c;是用来存储数据的 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-…

UVA-225 黄金图形 题解答案代码 算法竞赛入门经典第二版

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 一道不难的题目&#xff0c;即使不用什么剪枝方法&#xff0c;也不会超时&#xff0c;可以AC的。 但是题目有一些隐含条件&#xff08;或者说是我英语差一些&#xff0c;这道题的有些要求和题…

k8s环境搭建

创建一个新的model虚拟机&#xff0c;处理器为2&#xff0c;硬盘为40G 使用model主机克隆三台新的主机&#xff0c;名称分别为k8s_master&#xff0c;k8s_node01&#xff0c;k8s_node02&#xff0c;运行环境脚本&#xff0c;设置ip地址和名称&#xff0c;IP地址分别为66、77、…

《小迪安全》学习笔记04

这一块主要讲信息收集——渗透测试第一步&#xff01;&#xff01; 1.首先看有无网站&#xff1a; 存在CDN就用上次说的方法找到真实IP&#xff0c;然后转上↑ 收集四类信息&#xff1a;程序源码&#xff08;CMS&#xff09;等等 2.看有无APP&#xff0c;如涉及到WEB&#xf…

Leetcode—740. 删除并获得点数【中等】(unordered_map+set+sort)

2024每日刷题&#xff08;162&#xff09; Leetcode—740. 删除并获得点数 算法思想 实现代码 class Solution { public:int deleteAndEarn(vector<int>& nums) {unordered_map<int, int> freq;set<int> st;sort(nums.begin(), nums.end());int n num…