【发布时间】:2020-11-20 21:40:03
【问题描述】:
我正在尝试仅使用 c++ 排序功能来做到这一点LeetCode problem,但我似乎可以找到根据多个条件对元素进行排序的正确方法。
问题希望您返回没有任何通往另一个城市的路径的目的地城市。在我的排序中,我希望这个城市成为我向量的最后一个元素。现在,这是我拥有的代码:
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++。例如,他们没有解释比较器函数必须实现“严格的弱排序”,以及它的含义。该解释只能在in a good C++ textbook 找到。附言他们也没有解释将整个向量(按值)传递给比较器函数是多么低效,以及更好的方法。同样,请参阅一本好的教科书进行解释。
-
@sam 公平地说,按值传递是 OP 的错。他们使用通过引用传递。但是,是的,关于向量向量和在没有指导的情况下将新手扔给算法,我支持你。
标签: c++ string sorting vector conditional-statements