提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Leetcode
242.有效的字母异位词
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
先转换成char数组,分别将字母与个数存入到map中,然后再比较是否key相同,value相同,返回结果
● 看完代码随想录之后的想法
先存一个,另一个再减,如果为空或者负数,就返回alse
可以在for循环时,取出char
● 自己实现过程中遇到哪些困难
- char[] 数组要小写
- map<String,Integer> 泛型中写Integer不写int 应该写封装类
- String.toCharArray( )
- String.valueOf( )
- 数组长度 length( )
- Map的遍历keySet方法,得到Set类型的key
- 可以在for循环时,取出char,而不是直接转成char数组
- String.charAt(i)
● 今日收获,记录一下自己的学习时长
很多
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()){
return false;
}
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
char ch = s.charAt(i);
if(map.get(ch) == null){
map.put(ch,1);
}else{
map.put(ch,map.get(ch)+1);
}
}
for(int i=0;i<t.length();i++){
char ch = t.charAt(i);
if(map.get(ch) == null){
return false;
}
map.put(ch,map.get(ch)-1);
if(map.get(ch) == -1){
return false;
}
}
return true;
}
349. 两个数组的交集
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
都转化成set,然后将重复的再放到set里,最后将set中的元素赋值给数组
● 看完代码随想录之后的想法
一样
● 自己实现过程中遇到哪些困难
Collection的contains() 查看元素是否存在
怎样将交集元素,在数组创建时赋值
遍历set时,通过index++给数组赋值
● 今日收获,记录一下自己的学习时长
无
public int[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> set1 = getSet(nums1);
HashSet<Integer> set2 = getSet(nums2);
HashSet<Integer> set = new HashSet<Integer>();
for(int s1: set1){
if(set2.contains(s1)){
set.add(s1);
}
}
int[] inter = new int[set.size()];
int index = 0;
for(int s: set){
inter[index++] = s;
}
return inter;
}
public HashSet<Integer> getSet(int[] nums){
HashSet<Integer> set = new HashSet<Integer>();
for(int i =0;i<nums.length;i++){
set.add(nums[i]);
}
return set;
}
202. 快乐数
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
将每次的平方和放到set中,如果set包含了,说明循环,返回false
直到是1,返回true
● 看完代码随想录之后的想法
easy
● 自己实现过程中遇到哪些困难
- 平方和怎么求来着
- 数组.length 没有括号
● 今日收获,记录一下自己的学习时长
public boolean isHappy(int n) {
HashSet<Integer> set = new HashSet<Integer>();
while(n != 1){
n = sum(n);
if(set.contains(n)){
return false;
}
set.add(n);
}
return true;
}
public int sum(int n){
int sum = 0;
while(n!=0){
sum += (n%10)*(n%10);
n = n / 10;
}
return sum;
}
1. 两数之和
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
Map集合
● 看完代码随想录之后的想法
思路一样
● 自己实现过程中遇到哪些困难
- map是containsKey( )查看包含的key
● 今日收获,记录一下自己的学习时长
很好
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int[] sum = new int[2];
for(int i=0;i<nums.length;i++){
map.put(target - nums[i], i);
}
for(int i=0;i<nums.length;i++){
if(map.containsKey(nums[i]) && (map.get(nums[i])!=i)){
sum[0] = i;
sum[1] = map.get(nums[i]);
return sum;
}
}
return null;
}