题解 | #暴力求解——两个链表的第一个公共结点#

两个链表的第一个公共结点

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
/*计算出两个链表的长度差,让长的链表的指针指像和短的链表指针指向起始步长一样*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode *p =pHead1;
		ListNode *p1 = pHead1;
		ListNode *p2 = pHead2;
		int len1 = 0;
		int len2 = 0;
		while (p!=nullptr) {
			len1++;
			p = p->next;
		}
		p=pHead2;
		while (p!=nullptr) {
			len2++;
			p = p->next;
		}
		int len = len1 >= len2 ? (len1 - len2) : (len2 - len1);
		if(len1 >= len2){
			for(int i =0;i<len;i++){p1 = p1->next;}
			while (p1 !=nullptr && p2 != nullptr && p1 != p2) {
				p1 = p1->next;
				p2 = p2->next;
			}
		}else {
			for(int i=0;i<len;i++){p2 = p2->next;}
			while (p1 != nullptr && p2!=nullptr &&p1!=p2) {
				p1 = p1->next;
				p2 = p2->next;
			}
		}
		return p1;
    }
};

全部评论

相关推荐

Mush3r:1. 项目包装一下,比如说“跟某某电网/企业合作,已经实际交付”之类的,这样别人就觉得你至少是个实际的项目不是个玩具项目; 2. 对于 axios 这种工具,不要写“利用”,别人觉得是就是在调包,没什么技术含量,要写“重新封装”,可能实际上就是封装了一些 url 前缀之类的,但是听起来就更高级一点; 3. 结合缓存实现用户登陆,你作为前端是如何实现的?如何鉴权?token 过期如何设置?如何保证非登录用户不能访问页面/请求拦截器?一个都写没,前面这些都是面试会问的问题,但是面试官看了你这句话可能也不知道该问什么; 4. 利用 Vue3,通过 。。。 组件库,又是调包,这种没什么工作量,就是拿过来用一用的就不要往详情里写了,开头总结的时候提一嘴就行了; 后面小程序不怎么懂,不评价了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务