G面经prepare: Jump Game Return to Original Place

第二题 算法 给你一个arr 返回 T 或者 F
arr的每个数代表从这个点开始跳几部,返回T的情况:从这个arr中任意一个数开始跳,可以在每个元素都跳到且只跳到一次的情况下返回到开始跳的元素
比如[1,1,1,1,1,1] => T
[0,1,1,1,1,1]=> F
[7, 5, 2, 3] => F
[2,2,3,1] => T. From 1poi

scan array once, get the index that can be reached by each array element for one step. check if every index can be reached by using HashSet

 package JumpGameReturnToOrigin;
import java.util.*; public class Solution {
public boolean check(int[] arr) {
HashSet<Integer> set = new HashSet<Integer>();
for (int i=0; i<arr.length; i++) {
set.add((i + arr[i]) % arr.length);
}
if (set.size() == arr.length) return true;
else return false;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution sol = new Solution();
boolean res = sol.check(new int[]{1,1,1,1,1,1,1});
if (res) System.out.println("True");
else System.out.println("False");
} }
上一篇:Redisson 分布式锁源码 01:可重入锁加锁


下一篇:Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析