力扣hot100 LeetCode 热题 100 Java 哈希篇

打印 上一主题 下一主题

主题 1373|帖子 1373|积分 4119

两数之和

1. 两数之和 - 力扣(LeetCode)

直接暴力
  1. class Solution {
  2.     public int[] twoSum(int[] nums, int target) {
  3.         for(int i=0;i<nums.length;i++){
  4.              for(int j=i+1;j<nums.length;j++){
  5.                 long ans = nums[i]+nums[j];
  6.                 if(ans>target)continue;
  7.                 if(ans==target){
  8.                     return new int[]{i,j};
  9.                 }
  10.             }
  11.         }
  12.         return null;
  13.     }
  14. }
复制代码
哈希表优化
  1. class Solution {
  2.     public int[] twoSum(int[] nums, int target) {
  3.         HashMap<Integer,Integer>hm=new HashMap<>();
  4.         for(int i=0;i<nums.length;i++){
  5.             hm.put(nums[i],i);
  6.         }
  7.         for(int i=0;i<nums.length;i++){
  8.            if(hm.containsKey(target-nums[i])){
  9.                 int j=hm.get(target-nums[i]);
  10.                 if(i!=j){
  11.                     return new int[]{i,j};
  12.                 }
  13.            }
  14.         }
  15.         return null;
  16.     }
  17. }
复制代码
字母异位词分组

49. 字母异位词分组 - 力扣(LeetCode)

  1. class Solution {
  2.     public List<List<String>> groupAnagrams(String[] strs) {
  3.         Map<String, List<String>> map = new HashMap<String, List<String>>();
  4.         for (String str : strs) {
  5.             char[] array = str.toCharArray();
  6.             Arrays.sort(array);
  7.             String key = new String(array);
  8.             List<String> list = map.getOrDefault(key, new ArrayList<String>());
  9.             list.add(str);
  10.             map.put(key, list);
  11.         }
  12.         return new ArrayList<List<String>>(map.values());
  13.     }
  14. }
复制代码
最长连续序列

128. 最长连续序列 - 力扣(LeetCode)

  1. class Solution {
  2.     public int longestConsecutive(int[] nums) {
  3.         Arrays.sort(nums);
  4.         int max=0;
  5.         HashMap<Integer,Integer>hm=new HashMap<>();
  6.         for(int i=0;i<nums.length;i++){
  7.             int num=nums[i];
  8.             if(hm.containsKey(num))continue;
  9.             else{
  10.                 if(hm.containsKey(num-1)){
  11.                     hm.put(num,hm.get(num-1)+1);
  12.                 }else{
  13.                      hm.put(num,1);
  14.                 }
  15.             }
  16.             max=Math.max(max,hm.get(num));
  17.         }
  18.         return max;
  19.     }
  20. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表