Leetcode刷题Day5休息 Day6----------哈希表
创始人
2024-02-17 21:46:02

Leetcode刷题Day5休息 & Day6----------哈希表

1. 哈希表理论基础

数组、Set、Map
如果数据量小------------数组
如果数据量大------------Set
如果有Key、value------------Map

  • 文章讲解:https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

2. 有效的字母异位词 (242)

  • 题目链接:https://leetcode.cn/problems/valid-anagram/
  • 文章讲解: https://programmercarl.com/0242.%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.html
  • 视频讲解:https://www.bilibili.com/video/BV1YG411p7BA/?vd_source=1fb98c05c7fbfd06713f014ea5079d5b

思路

  1. 分别统计两个字符串每个字母出现的次数,看是否相同。
  2. 数据量小---------使用数组
class Solution {public boolean isAnagram(String s, String t) {int[] ints=new int[26];for(int i=0;iints[s.charAt(i)-'a']++;}for(int i=0;iints[t.charAt(i)-'a']--;}for(int i=0;iif(ints[i]!=0) return false;}return true;}
}

3. 两个数组的交集 (349)

  • 题目链接: https://leetcode.cn/problems/intersection-of-two-arrays/
  • 文章讲解/视频讲解:https://programmercarl.com/0349.%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.html

思路

  1. 用把第一个数组的数据加到Set1里 在Set1里查是否有数组2的元素,把有的数据在放到Set2里(避免重复) 将Set2转成数组
  2. set2.stream().mapToInt(x -> x).toArray();
    Javadoc链接:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set set=new HashSet<>();Set set2=new HashSet<>();int[] ints=new int[Math.max(nums2.length,nums1.length)];for(int i=0;iset.add(nums1[i]);}for(int i=0;iif(set.contains(nums2[i])){set2.add(nums2[i]);} }return set2.stream().mapToInt(x -> x).toArray();}
}

4. 快乐数 (202)

  • 题目链接: https://leetcode.cn/problems/happy-number/
  • 文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html

思路

  • 循环说明了要用Set,看是否存在
  • while循环终止的条件:n==1 或者n成为了循环数,所以在循环外判断是否等于1来判断是否是快乐数。因为存在一种成为循环数了但不是1的情况,输入2:循环数是4。例如:
    在这里插入图片描述
  • 数字运算:有多位数的可能,例如:100,所以判断是否>0,先得余,再得商
class Solution {public boolean isHappy(int n) {Set set=new HashSet<>();while(n!=1&&!set.contains(n)){set.add(n);n=getNum(n);} return n==1;   }public int getNum(int n){int res=0;while(n>0){res+=(n%10)*(n%10);n=n/10;}System.out.println(res);return res;}
}

5. 两数之和 (1)

  • 题目链接: https://leetcode.cn/problems/two-sum/
  • 文章讲解/视频讲解:https://programmercarl.com/0001.%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.html
class Solution {public int[] twoSum(int[] nums, int target) {Map map=new HashMap<>();for(int i=0;iint num=target-nums[i];if(!map.containsKey(num)){map.put(nums[i],i);}else return new int[]{i,map.get(num)};}return new int[0];    }
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...