HashMap
萌萌,站起来
这个作者很懒,什么都没留下…
展开
-
自己实现hashmap、linkedhashmap
参考了JDK1.8源码,自己实现一个简单的,源码里有很多位运算。我这里化为简单的实现了。这里使用1.8以后的尾插法。只实现了 put 、resize、get方法。package com.meng.hashmap;public class MyHashMap { private Entry[] table; private static int initialCapacity = 16; private static double loadFactor = 0.75;原创 2020-08-20 23:14:27 · 183 阅读 · 0 评论 -
滑动窗口 labuladong,lee76 最小覆盖字串、lee567 字符串的排列、 lee438 找到字符串中所有字母异位词、 lee3 无重复字符的最长子串
lee76 最小覆盖子串给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。滑动窗口 labuladong想法注意:解决了,Integer自动拆箱这边 需要强制转化一下int,Integer会缓存频繁使用的数值,数值范围为-128到127,在此范围内直原创 2020-07-03 18:36:18 · 341 阅读 · 0 评论 -
模式匹配 面试题16.18,需要再想想
你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:输入: pattern = “abba”, value = “dogcatcatdog”输出: true原创 2020-06-22 17:34:30 · 185 阅读 · 0 评论 -
lee974 和可被 K 整除的子数组 (前缀和、 hashmap)
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <= 100002原创 2020-05-27 21:25:06 · 148 阅读 · 0 评论 -
lee146 LRU缓存机制 自建双向链表 形成哈希链表
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。你是否可以在 O(1) 时间复杂度原创 2020-05-25 22:21:24 · 114 阅读 · 0 评论 -
lee347前k个高频元素 没找到错误
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。没找到...原创 2020-01-27 16:24:16 · 138 阅读 · 0 评论 -
玩转lee49字母异位词分组。
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。思路 hashmap思路:利用HashMap ...原创 2020-01-13 17:22:05 · 212 阅读 · 0 评论 -
玩转lee1 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思考1 暴力先sor...原创 2020-01-09 20:10:30 · 82 阅读 · 0 评论 -
玩转lee451 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cac...原创 2020-01-09 19:29:04 · 87 阅读 · 0 评论 -
玩转lee290 单词规律 模式匹配 lee205 同构
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = “abba”, str = “dog cat cat dog”输出: true示例 2:输入:pattern = “abba”, str ...原创 2020-01-06 15:57:01 · 135 阅读 · 0 评论 -
new 最小k个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。原创 2019-10-18 19:20:13 · 96 阅读 · 0 评论 -
lee290字符串匹配
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = “abba”, str = “dog cat cat dog”输出: true示例 2:输入:pattern = “abba”, str ...原创 2019-11-15 16:12:23 · 200 阅读 · 0 评论 -
lee242有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?我的思...原创 2019-11-09 16:18:39 · 1465 阅读 · 0 评论 -
new 数组中的重复数字 可改动数组\不可改动数组
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。直接排序 Arrays.sort()时间复杂度:O(nlogn)HashMappublic boolean duplicate...原创 2019-11-02 20:03:48 · 105 阅读 · 0 评论 -
new 字符流中第一个不重复的字符
使用HashMap使用有序的LinkedHashMap 按输入顺序输出HashMap和LinkedHashMap区别HashMap无序,LinkedHashMap 按输入顺序存储import java.util.*;public class Solution { //Insert one char from stringstream Map<Character,In...原创 2019-10-26 21:58:24 · 748 阅读 · 0 评论 -
new数组中只出现一次的数字 位运算有些不太明白
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。先用 HashMap 试试import java.util.*;public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { if(array.len...原创 2019-10-23 21:52:02 · 140 阅读 · 0 评论 -
new 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共结点。直接在第一个链表上遍历每个节点,每遍历一个节点,就在第二个链表上顺序遍历每个节点时 O(mn)HashMap/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }...原创 2019-10-20 21:50:17 · 140 阅读 · 0 评论 -
new 第一次只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).直接从头开始扫描字符中的每一个字母,那这个字母和后面的每个数比较,时O(n^2)哈希表HashMapimport java.util.*;public class Solution { public int FirstN...原创 2019-10-20 14:18:22 · 133 阅读 · 0 评论