用户给了我两个数组。我的代码应该找出它向左或向右旋转了多少次。我们可以放心地假设元素不会重复。
i/p:
数组 (arr1) 2, 6, 4, 10, 8 ,12 ,11
旋转数组(arr2)4、10、8、12、11、2、6
o/p: 2
方法1:
我解决这个问题的方法是这样的:
1.从旋转数组中取出第一个元素,并从旋转数组中取出最后一个元素。分别将它们命名为“first”和“last”。并将计数初始化为0
2.从头开始将“first”与arr1的元素进行比较,直到到达arr1中的数字“first”。同时开始将“last”与arr1的元素从末尾开始进行比较,并不断递减,直到我们达到与arr1中的“last”等价的数字。
3.我们可以在step2的同一个for循环中对上面的步骤2进行递增和递减。还可以递增count变量。
3.就是这样,无论是“第一个”还是“最后一个”,都会尽早找到它的等价物,然后打破并打印计数。
方法2:
取 arr2 的第一个元素并开始将其与 arr1 元素从 end 进行比较,直到找到匹配项。我们将arr1递减的次数等于旋转的次数
有没有比上面两个更好的方法?