問題描述 :
給定煉表頭結點 head,該鍊錶上的每個結點都有乙個唯一的整型值 。
同時給定列表 g,該列表是上述鍊錶中整型值的乙個子集。
返回列表 g 中元件的個數,這裡對元件的定義為:鍊錶中一段極長連續結點的值(該值必須在列表 g 中)構成的集合。極長的含義是:這段連續結點的前面或後面結點不屬於g。
示例 1:
輸入:head: 0->1->2->3
g = [0, 1, 3]
輸出: 2
解釋:鍊錶中,0 和 1 是相連線的,且 g 中不包含 2,所以 [0, 1] 是 g 的乙個元件,同理 [3] 也是乙個元件,故返回 2。
示例 2:
輸入:head: 0->1->2->3->4
g = [0, 3, 1, 4]
輸出: 2
解釋:鍊錶中,0 和 1 是相連線的,3 和 4 是相連線的,所以 [0, 1] 和 [3, 4] 是兩個元件,故返回 2。
說明:如果 n 是給定鍊錶 head 的長度,1 <= n <= 10000。
鍊錶中每個結點的值所在範圍為 [0, n - 1]。
1 <= g.length <= 10000
g 是鍊錶中所有結點的值的乙個子集.
輸入說明 :
首先輸入鍊錶長度len,然後輸入len個整數,以空格分隔。
再輸入g的大小m,然後輸入m個整數,以空格分隔。
輸出說明 :
輸出乙個整數,表示結果。
輸入範例:
40 1 2 3
30 1 3
輸出範例:
2
#include
#include
using
namespace std;
struct listnode
listnode
(int x)
:val
(x),
next
(null
)listnode
(int x, listnode *next)
:val
(x),
next
(next)};
class
solution
else
} p=p-
>next;
}return num;}}
;listnode *
createbytail()
return head;
}int
main()
res=
solution()
.numcomponents
(head,g)
; cout
}
樂扣T143 OJ1 重排鍊錶 c
問題描述 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...