/*** @param {number} n* @return {boolean}*/letgetNext=function(n){return n.toString().split('').map(i=> i **2).reduce((a, b)=> a + b);}letisHappy=function(n){let seen =newSet();while(n !==1&&!seen.has(n)){seen.add(n);n =getNext(n);}return n ===1;};
方法二:快慢指针
/*** @param {number} n* @return {boolean}*/letgetNext=function(n){return n.toString().split('').map(i=> i **2).reduce((a, b)=> a + b);}letisHappy=function(n){let slow = n;let fast =getNext(n);while(fast !==1&& fast !== slow){slow =getNext(slow);fast =getNext(getNext(fast));}return fast ===1;};
方法三:数学
/*** @param {number} n* @return {boolean}*/// 定义一个包含这些数字的散列集let cycleMembers =newSet([4,16,37,58,89,145,42,20]);letgetNext=function(n){return n.toString().split('').map(i=> i **2).reduce((a, b)=> a + b);}letisHappy=function(n){while( n !==1&&!cycleMembers.has(n)){n =getNext(n);}return n ===1;};
一、LVS
(一)什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,这是一个由章文岩博士发起的开源项目,官网是http://www.linuxvirtualserver.org,现在lvs已经是linux内核标准的-部分,使用lv…