添加py和js,添加注释

This commit is contained in:
jaredliw 2021-07-12 19:35:02 +08:00
parent dff62af40a
commit ef1da6bf6f

View File

@ -10,7 +10,7 @@
今天给大家带来一个不是那么难的题目这个题目的解答方法很多只要能AC的就是好方法虽然题目不是特别难但是也是剑指offer上的经典题目所以大家要记得打卡呀 今天给大家带来一个不是那么难的题目这个题目的解答方法很多只要能AC的就是好方法虽然题目不是特别难但是也是剑指offer上的经典题目所以大家要记得打卡呀
然后今天我们的链表板块就算结束啦周末的时候我会对链表的题目做一个总结俗话说温故而知新嘛好啦废话不多说我们一起来看一下今天的题目吧 然后今天我们的链表板块就算结束啦周末的时候我会对链表的题目做一个总结俗话说温故而知新嘛好啦废话不多说我们一起来看一下今天的题目吧
题目描述 题目描述
@ -41,16 +41,19 @@ public class Solution {
ListNode tempb = headB; ListNode tempb = headB;
//定义Hashset //定义Hashset
HashSet<ListNode> arr = new HashSet<ListNode>(); HashSet<ListNode> arr = new HashSet<ListNode>();
//遍历链表A将所有值都存到arr中
while (tempa != null) { while (tempa != null) {
arr.add(tempa); arr.add(tempa);
tempa = tempa.next; tempa = tempa.next;
} }
//遍历列表B如果发现某个结点已在arr中则直接返回该节点
while (tempb != null) { while (tempb != null) {
if (arr.contains(tempb)) { if (arr.contains(tempb)) {
return tempb; return tempb;
} }
tempb = tempb.next; tempb = tempb.next;
} }
//若上方没有返回此刻tempb为null
return tempb; return tempb;
} }
@ -67,21 +70,73 @@ public:
ListNode * tempb = headB; ListNode * tempb = headB;
//定义Hashset //定义Hashset
set <ListNode *> arr; set <ListNode *> arr;
//遍历链表A将所有值都存到arr中
while (tempa != nullptr) { while (tempa != nullptr) {
arr.insert(tempa); arr.insert(tempa);
tempa = tempa->next; tempa = tempa->next;
} }
//遍历列表B如果发现某个结点已在arr中则直接返回该节点
while (tempb != nullptr) { while (tempb != nullptr) {
if (arr.find(tempb) != arr.end()) { if (arr.find(tempb) != arr.end()) {
return tempb; return tempb;
} }
tempb = tempb->next; tempb = tempb->next;
} }
//若上方没有返回此刻tempb为null
return tempb; return tempb;
} }
}; };
``` ```
JS Code:
```js
var getIntersectionNode = function(headA, headB) {
let tempa = headA;
let tempb = headB;
//定义Hashset
let arr = new Set();
//遍历链表A将所有值都存到arr中
while (tempa) {
arr.add(tempa);
tempa = tempa.next;
}
//遍历列表B如果发现某个结点已在arr中则直接返回该节点
while (tempb) {
if (arr.has(tempb)) {
return tempb;
}
tempb = tempb.next;
}
//若上方没有返回此刻tempb为null
return tempb;
};
```
Python Code:
```py
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
tempa = headA
tempb = headB
# 定义Hashset
arr = set()
# 遍历链表A将所有值都存到arr中
while tempa is not None:
arr.add(tempa)
tempa = tempa.next
# 遍历列表B如果发现某个结点已在arr中则直接返回该节点
while tempb is not None:
if tempb in arr:
return tempb
tempb = tempb.next
# 若上方没有返回此刻tempb为null
return tempb
```
下面这个方法比较巧妙不是特别容易想到大家可以自己实现一下这个方法也是利用我们的双指针思想 下面这个方法比较巧妙不是特别容易想到大家可以自己实现一下这个方法也是利用我们的双指针思想
下面我们直接看动图吧特别直观一下就可以搞懂 下面我们直接看动图吧特别直观一下就可以搞懂
@ -108,7 +163,7 @@ public class Solution {
tempa = tempa != null ? tempa.next: headB; tempa = tempa != null ? tempa.next: headB;
tempb = tempb != null ? tempb.next: headA; tempb = tempb != null ? tempb.next: headA;
} }
return tempa; return tempa;//返回tempb也行
} }
} }
``` ```
@ -124,15 +179,48 @@ public:
ListNode * tempb = headB; ListNode * tempb = headB;
//循环 //循环
while (tempa != tempb) { while (tempa != tempb) {
//如果不为空就指针下移为空就跳到另一链表的头部 //如果不为空就指针下移为空就跳到另一链表的头部
tempa = tempa != nullptr ? tempa->next: headB; tempa = tempa != nullptr ? tempa->next: headB;
tempb = tempb != nullptr ? tempb->next: headA; tempb = tempb != nullptr ? tempb->next: headA;
} }
return tempa; return tempa;//返回tempb也行
} }
}; };
``` ```
JS Code:
```js
var getIntersectionNode = function(headA, headB) {
//定义两个节点
let tempa = headA;
let tempb = headB;
//循环
while (tempa != tempb) {
//如果不为空就指针下移为空就跳到另一链表的头部
tempa = tempa != null ? tempa.next: headB;
tempb = tempb != null ? tempb.next: headA;
}
return tempa;//返回tempb也行
};
```
Python Code:
```py
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
# 定义两个节点
tempa = headA
tempb = headB
# 循环
while tempa is not tempb:
# 如果不为空就指针下移为空就跳到另一链表的头部
tempa = tempa.next if tempa is not None else headB
tempb = tempb.next if tempb is not None else headA
return tempa # 返回tempb也行
```
好啦链表的题目就结束啦希望大家能有所收获下周就要更新新的题型啦继续坚持肯定会有收获的 好啦链表的题目就结束啦希望大家能有所收获下周就要更新新的题型啦继续坚持肯定会有收获的