4 鍊錶元件 LeetCode 817

2021-10-07 19:13:08 字數 2342 閱讀 2647

問題描述 :

給定煉表頭結點 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 是鍊錶中所有結點的值的乙個子集.

可使用以下**,完成其中的numcomponents函式,其中形參head指向無頭結點單鏈表,g為列表,返回元件的個數。

#include

#include

using namespace std;

struct listnode

int val;

listnode *next;

listnode() : val(0), next(null) {}

listnode(int x) : val(x), next(null) {}

listnode(int x, listnode *next) : val(x), next(next) {}

class solution listnode *createbytail()

listnode *head;

listnode *p1,*p2;

int n=0,num;

int len;

cin>>len;

head=null;

while(n>num)

return head;

int main()

vectorg;

int m,data,res;

listnode* head = createbytail();

cin>>m;

for(int i=0; i>data;

g.push_back(data);

}res=solution().numcomponents(head,g);

cout《輸入說明 :

首先輸入鍊錶長度len,然後輸入len個整數,以空格分隔。

再輸入g的大小m,然後輸入m個整數,以空格分隔。

輸出說明 :

輸出乙個整數,表示結果。

輸入範例 :

40 1 2 3

30 1 3

輸出範例 :

/*注意的一點:這裡的鍊錶都是有序鍊錶,但是題目中沒有說。。。

思路:將vector中的每個值複製到set中,然後從煉表頭節點開始判斷,如果當前頭節點的值在set中,就繼續判斷下乙個節點的值是否在set中,只有當下乙個節點為null,或者下乙個節點的值不在set中,元件數才加1

*/

#include

#include

#include

using

namespace std;

struct listnode

listnode

(int x)

:val

(x),

next

(null)}

;class

solution

} head = head-

>next;

}return cnt;}}

;listnode *

createbytail()

return head;

}void

displaylink

(listnode *head)

cout<<

"tail\n";}

intmain()

res=

solution()

.numcomponents

(head,g)

; cout

}

LeetCode81 搜尋旋轉排序陣列 II

二分查詢,但是下面的 在測試用例 3,1 1中出錯。package 牛客刷題.leetcode.查詢.search in rotated sorted array ii created by administrator on 2018 6 28 0028.public class solution ...

LeetCode 81 搜尋旋轉排序陣列 II

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,0,1,2,2,5,6 可能變為 2,5,6,0,0,1,2 編寫乙個函式來判斷給定的目標值是否存在於陣列中。若存在返回true,否則返回false。示例 1 輸入 nums 2,5,6,0,0,1,2 target 0輸出 t...

leetcode81 搜尋旋轉排序陣列 II

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,0,1,2,2,5,6 可能變為 2,5,6,0,0,1,2 編寫乙個函式來判斷給定的目標值是否存在於陣列中。若存在返回 true,否則返回 false。示例 1 輸入 nums 2,5,6,0,0,1,2 target 0 輸...