Leetcode 457 環形陣列迴圈 C

2021-10-07 23:31:44 字數 1160 閱讀 4903

給定乙個含有正整數和負整數的環形陣列 nums。 如果某個索引中的數 k 為正數,則向前移動 k 個索引。相反,如果是負數 (-k),則向後移動 k 個索引。因為陣列是環形的,所以可以假設最後乙個元素的下乙個元素是第乙個元素,而第乙個元素的前乙個元素是最後乙個元素。

確定 nums 中是否存在迴圈(或週期)。迴圈必須在相同的索引處開始和結束並且迴圈長度 > 1。此外,乙個迴圈中的所有運動都必須沿著同一方向進行。換句話說,乙個迴圈中不能同時包括向前的運動和向後的運動。

示例 1:

輸入:[2,-1,1,2,2]

輸出:true

解釋:存在迴圈,按索引 0 -> 2 -> 3 -> 0 。迴圈長度為 3 。

示例 2:
輸入:[-1,2]

輸出:false

解釋:按索引 1 -> 1 -> 1 ... 的運動無法構成迴圈,因為迴圈的長度為 1 。根據定義,迴圈的長度必須大於 1 。

示例 3:
輸入:[-2,1,-1,-2,-2]

輸出:false

解釋:按索引 1 -> 2 -> 1 -> ... 的運動無法構成迴圈,因為按索引 1 -> 2 的運動是向前的運動,而按索引 2 -> 1 的運動是向後的運動。乙個迴圈中的所有運動都必須沿著同一方向進行。

-1000 ≤ nums[i] ≤ 1000

nums[i] ≠ 0

0 ≤ nums.length ≤ 5000

暴力我們用乙個陣列visit記錄是否拜訪過

對於nums陣列,我們進行修改,進行探索時,我們將其改為int_min,如果再次訪問到,表明我們可以以這個下標作為起點;如果不能作為環形陣列,我們把它改為0

詳細過程見**

vector<

int> visit;

bool

search

(vector<

int>

& nums,

int begin,

int index,

int dir)

bool

circulararrayloop

(vector<

int>

& nums)

}return

false

;}

Leetcode 457 環形陣列迴圈

給定一組含有正整數和負整數的陣列。如果某個索引中的 n 是正數的,則向前移動 n 個索引。相反,如果是負數 n 則向後移動 n 個索引。假設陣列首尾相接。判斷陣列中是否有環。環中至少包含 2 個元素。環中的元素一律 向前 或者一律 向後 示例 1 給定陣列 2,1,1,2,2 有乙個迴圈,從索引 0...

457 環形陣列迴圈

給定一組含有正整數和負整數的陣列。如果某個索引中的 n 是正數的,則向前移動 n 個索引。相反,如果是負數 n 則向後移動 n 個索引。假設陣列首尾相接。判斷陣列中是否有環。環中至少包含 2 個元素。環中的元素一律 向前 或者一律 向後 你能寫出時間複雜度為 o n 且空間複雜度為 o 1 的演算法...

457 環形陣列迴圈

給定乙個含有正整數和負整數的環形陣列nums。如果某個索引中的數 k 為正數,則向前移動 k 個索引。相反,如果是負數 k 則向後移動 k 個索引。因為陣列是環形的,所以可以假設最後乙個元素的下乙個元素是第乙個元素,而第乙個元素的前乙個元素是最後乙個元素。確定nums中是否存在迴圈 或週期 迴圈必須...