恢复旋转排序数组
2018-01-15 21:27
281 查看
思路
这道题应该首先计算出来 每个数字到其 原位置 移动的距离。但是有一个陷阱是,当使用程序移动的 时候,有时间遇见 1, 3, 5 只是在几个数之间交换的情形(死循环),所以要保证程序能够跳的出来。代码
public void recoverRotatedSortedArray(List<Integer> nums) { int temp = nums.get(0); boolean[] status = new boolean[nums.size()]; Arrays.fill(status, false); int temp2; int pos = 0; int pointer = 0; int count = 0; int pointerNew; for (int i = 0; i < nums.size(); i++) { if (temp > nums.get(i)) { temp = nums.get(i); pos = i; } } if (pos == 0) { return; } for (int i = 0; i < nums.size() && status[i] == false; i++) { temp = nums.get(i); pointer = i; while (true) { pointerNew = pointer - pos; if (pointerNew < 0) { pointerNew += nums.size(); } if (status[pointerNew] == false) { temp2 = nums.get(pointerNew); nums.set(pointerNew, temp); status[pointerNew] = true; temp = temp2; pointer = pointerNew; }else { break; } } } }
参考
相关文章推荐
- [LintCode]39.恢复旋转排序数组
- 39. 恢复旋转排序数组
- LintCode 39 恢复旋转排序数组
- Lintcode:恢复旋转排序数组
- 恢复旋转排序数组
- 39 - 恢复旋转排序数组
- lintcode-39-恢复旋转排序数组
- LintCode之39 恢复旋转排序数组
- 39. 恢复旋转排序数组-LintCode
- LintCode【简单】39. 恢复旋转排序数组 。代码及思路
- 恢复旋转排序数组
- 【LintCode】Recover Rotated Sorted Array 恢复旋转排序数组
- 恢复旋转排序数组
- Lintcode 39. 恢复旋转排序数组
- 恢复旋转排序数组&&旋转字符串
- 日常练习:lintcode 39. 恢复旋转排序数组
- 恢复旋转排序数组
- 恢复旋转排序数组
- 恢复旋转排序数组
- LintCode-39. 恢复旋转排序数组