题解 | #牛牛的冒险旅程#
牛牛的冒险旅程
https://www.nowcoder.com/practice/79f7bf3d985c4b33af6d048ab53848d6
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return int整型 */ public int gcdInCycle (ListNode head) { // write code here ArrayList<Integer> nums = new ArrayList<>(); HashMap<Integer, Integer> map = new HashMap<>(); ListNode cur=head; while(cur != null){ if(map.containsKey(cur.val)){ // System.out.println(cur.val); nums.add(cur.val); map.compute(cur.val, (key, value) -> value + 1); if(map.get(cur.val) == 3){ return ListGcd(nums); } }else{ map.put(cur.val,1); } cur=cur.next; } return -1; } public int gcd(int x,int y){ while(y !=0){ int tmp=x; x=y; y=tmp%y; } return x; } public int ListGcd(ArrayList<Integer> nums){ int result = nums.get(0); for (int i = 1; i < nums.size(); i++) { result = gcd(result, nums.get(i)); if (result == 1) { // 如果在过程中GCD变为1,那么最终的GCD就是1 return 1; } } return result; } }