哈希映射
先看一遍之前做过的笔记 https://mp.weixin.qq.com/s/6SLt2NRx7nFVneeYFn6iYw
再多去看一下网上查找的文章 多看几遍 HashMap in Java - GeeksforGeeks
class Solution {
public int[] twoSum(int[] nums, int target) {
// 创建 HashMap
Map<Integer, Integer> map = new HashMap<Integer, Integer>();//
for (int i = 0; i < nums.length; i++) {
// 判断数组nums是否存在target - nums[i]的key值
if (map.containsKey(target - nums[i])) {// containsKey查找键是否存在
// 存在就返回对应target-nums[i]的key值对应的下标和此时i的下标
return new int[] { map.get(target - nums[i]), i };// get 根据键获取值
}
//不存在就把nums[i], i添加到map中
map.put(nums[i], i);// put() 添加
}
throw new IllegalArgumentException("No two sum solution");// 如果最终都没有结果则抛出异常
}
}
快乐数
啊啊啊啊啊啊快乐不起来啊,我记得我之前是看过这个题的,有思路但是写不出来给我劝退了,我就不信了这一次还做不出来
二话不说上哈希表解法哼
就是先给这个数n数位分离,然后求平方相加就得到下一个数,每一次进行这样的计算后就判断是不是在这个集合中,不存在的话则将其加入集合中,在的话就不是快乐数。
为什么要这样说呢!!!为啥曾经出现过就肯定不是快乐数,以前不懂我现在懂了,就拿2举例,就这样一直下去是跳不出来的是无限循环的,重复出现过的就说明它已经存在了,就不是快乐数。
class Solution {
private int getNextNumber(int n) {
int res = 0;
while (n > 0) {
//数位分离
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
return res;
}
public boolean isHappy(int n) {
//构建一个空的HashSet对象
Set<Integer> record = new HashSet<>();
//contains() 方法用于检查 HashSet 中是否存在特定元素
//如果集合中存在某个元素,则用于返回 true。
while (n != 1 && !record.contains(n)) {
//HashSet 类的 add() 方法在内部调用了put()方法
record.add(n);//不存在则将n加入集合中
//调用方法将当前数替换为它每个位置上的数字的平方和。
n = getNextNumber(n);
}
return n==1;//如果n为1,则是快乐数
}
}
加一个题 罗马数转整数
class Solution {
public String intToRoman(int num) {
int[] value = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] reps = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuffer ans = new StringBuffer();//用来记录组成数字的字母
for (int i = 0; i < value.length; i++) {
//如果该数超过了上面列的数之一
while (num >= value[i]) {
num = num - value[i];
ans.append(reps[i]);//追加value[i]对应的字母reps[i]
}
}
return ans.toString();//把最终的ans的字母组成输出来
}
}
啊啊啊啊不刷题了我要继续学操作系统了,我们计算机网络老师教的很好,别的老师的课我从来不听但是她的课我都是很认真听的,还有离散数学,上大学以来唯一能让我认真听的课就数学和计算机网络了,计组和操作系统我还是不指望我们学校老师了,靠自己学可能学的更快一点。啊啊啊啊啊还有一系列的什么Java web,之后ssm,然后springboot什么的太多了,我都搞不清楚要按什么路线来学,反正就是很迷茫,我高三都没有这样认真过。