Day 25
题目描述
思路
- 创建一个hashmap
- 从前向后遍历数组
- 如果存在target-nums[i]在map中,记录它们两个的序号返回即可
- 不存在,就将该元素放入map中,存放序号
注意:题目说的是必然存在唯一解
class Solution {public int[] twoSum(int[] nums, int target) {int[]res=new int[2];Map<Integer,Integer>map=new HashMap<>();for(int i=0;i<nums.length;i++){if(map.containsKey(target-nums[i])){res[0]=map.get(target-nums[i]);res[1]=i;break;}else{map.put(nums[i],i);}}return res;}
}
题目描述
思路
这题我并没有很好的解法,直接Set记录每次的平方和,如果出现重复且不为1,那么就不能得到结果为1。
class Solution {public boolean isHappy(int n) {Set<Integer> set=new HashSet<>();int s;while(n!=1){s=0;while(n!=0){s=s+(n%10)*(n%10);n=n/10;}if(set.contains(s)){return false;}else{set.add(s);n=s;}}return true;}
}