leetcode1436旅行终点站

把起点存储到了一个列表,然后判断终点有没有在这个列表里面,如果没有就返回。

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]);

最后比较,和上面的一样。

还有用递归的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值