給定乙個含有正整數和負整數的環形陣列 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中是否存在迴圈 或週期 迴圈必須...