c++ - 排序上的多个条件(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], ... ,则我的排序只能确保两条路径是连续的。但我的问题是,我的排序没有处理没有任何通往另一个城市的路径的城市(也就是目的地城市)的情况。我想把它放在这个特定的城市作为我向量的最后一个元素。我可以通过在我的排序函数中添加一些代码(条件)来做到这一点吗?如果是,如何?
谢谢你。
解决方案
你不能用std::sort
. 排序功能需要元素的总顺序。你只有一部分。将所有对放入后,排序可能会决定比较两个不相关的元素。它不会试图找到以“正确”顺序比较它们的方法。
你需要找到一个新的算法。我可以建议:
std::map<string, string> destinations;
并且只是跟随目的地直到你到达终点?
推荐阅读
- sql - 我在优化 MS SQL 中的复杂视图时遇到问题
- html - CSS:使用 flexbox 创建固定页眉和页脚,同时具有动态上下文
- r - 如何更改圆环图切片的位置
- ajax - Laravel 依赖的两个下拉菜单
- shopify - 如何在 Shopify 布鲁克林主题的主页上安装产品轮播?
- cucumber - 如何仅根据黄瓜中的标签运行选定的场景?
- sql - DB sql Altibase '作为语言 java 名称' 使用
- javascript - 如何将python函数转换为rest api
- python - 使用python修改csv文件中的一些行
- cognos-11 - 我在哪里可以设置 cognos analytics 11 报告缓存打开/关闭