首页 > 解决方案 > 排序上的多个条件(c ++)

问题描述

我正在尝试仅使用 c++ 排序函数来解决这个LeetCode 问题,但我似乎可以找到根据多个条件对元素进行排序的正确方法。

问题希望您返回没有任何通往另一个城市的路径的目的地城市。在我的排序中,我希望这个城市成为我向量的最后一个元素。现在,这是我拥有的代码:

class Solution {
public:
    string destCity(vector<vector<string>>& paths) {
        sort(paths.begin(), paths.end(),[](vector<string> a, vector<string> b ){return (a[1] == b[0]);});
        return (paths[paths.size() -1][1]);   
    }
};`

输入是路径向量([cityA -> cityB], [cityM -> city N] , ... )。

在下图中,我们可以看到函数的输入、输出、我的标准输出和预期结果:

在此处输入图像描述

如果一条路径的输出城市等于另一条路径的输入城市 [cityA-> cityB], [cityB -> cityC], ... ,则我的排序只能确保两条路径是连续的。但我的问题是,我的排序没有处理没有任何通往另一个城市的路径的城市(也就是目的地城市)的情况。我想把它放在这个特定的城市作为我向量的最后一个元素。我可以通过在我的排序函数中添加一些代码(条件)来做到这一点吗?如果是,如何?

谢谢你。

标签: c++stringsortingvectorconditional-statements

解决方案


你不能用std::sort. 排序功能需要元素的总顺序。你只有一部分。将所有对放入后,排序可能会决定比较两个不相关的元素。它不会试图找到以“正确”顺序比较它们的方法。

你需要找到一个新的算法。我可以建议:

std::map<string, string> destinations;

并且只是跟随目的地直到你到达终点?


推荐阅读