242.有效的字母异位词
二刷,过
349. 两个数组的交集.两个数组求交集
看完题后的思路
将一个数组放入set集合,判断set中每一个元素是否包含在set中.
思路
看上文
代码
时间复杂度
时间复杂度 0(n)
空间复杂度0(n) 需要创建一个集合
快乐数
// day06 是否是快乐数
public boolean isHappy(int n) {
HashSet<Integer> set = new HashSet<>();
set.add(n);
Integer power=n;
while (true){
List<Integer> wei = getWei(power);
power= getPower(wei);
if (power==1){
return true;
}
if (set.contains(power)){
return false;
}
set.add(power);
}
}
//
public List<Integer> getWei(int n){
ArrayList<Integer> list = new ArrayList<>();
while (n>0){
int i = n % 10;
list.add(i);
n/=10;
}
return list;
}
// 获取平方
public Integer getPower(List<Integer> list){
int res=0;
for (Integer integer : list) {
res+=(integer*integer);
}
return res;
}
两数之和
看完题后的思路
将元素放入map中,key为值,value为下标,遍历数组,看targrt-num是否在map中
// 两数之和
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> hashMap = new HashMap<>();
int i=0;
for (int num : nums) {
hashMap.put(num,i);
i++;
}
i=0;
for (int num : nums) {
int i1 = target - num;
if (hashMap.containsKey(i1)&&hashMap.get(i1)!=i){
return new int[]{i,hashMap.get(i1)};
}
i++;
}
return new int[2];
}