把起点存储到了一个列表,然后判断终点有没有在这个列表里面,如果没有就返回。
begin=[]
for path in paths:
begin.append(path[0])
for path in paths:
if path[1] not in begin:
return path[1]
本来想求一下这个paths的长度,但是好像不行,一会儿研究一下。
学习一下大佬们的技术。
用python的大佬
- set,利用集合差,起点放在setA,终点放在setB,setB-setA,然后pop()
关于set:https://blog.csdn.net/business122/article/details/7541486 - dict,字典Key是每一个城市的名字,value是一个列表[a,b],a对应出现的次数,b对应在路线中的头(头为0)还是尾(尾为1),最后遍历字典的items
用java的大佬
- hash表,Map<String, String> map,键为出发城市,值为到达城市。不断根据出发城市寻找到达城市,如果找不到,那就返回。
- hashset,先把起点存到set里面,遍历终点看是不是在集合里面。
学习:https://blog.csdn.net/caihaijiang/article/details/6280251
用C的,本来想用C的,但是一时不知道怎么处理 char ***,就换成python,,,,菜鸡落泪。
依次比较起点和终点,如果能找到某个路径的终点是另一个路径的终点,就标记为1
if (strcmp(paths[i][1], paths[j][0]) == 0)
还可以先把起点存起来
char **city = NULL;
city = (char **)malloc(sizeof(char *) * pathsSize);
对于每个city[i],
city[i] = malloc(sizeof(char) * 11);
memset(city[i], 0 , sizeof(char) * 11);
存起来
strcpy(city[i], paths[i][0]);
最后比较,和上面的一样。
还有用递归的。