【LeetCode刷题日记】哈希表类题目常见题型_class solution symbol_values = { ‘i‘ 1, ‘v‘ 5,

public:
vector twoSum(vector& nums, int target) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return {i, j};
}
}
}
return {};
}
};


![在这里插入图片描述](https://img-blog.csdnimg.cn/220da07c3a394308a52aeb1ef835ce1c.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/be20853026804ceb851830ee02f20ec5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
public:
vector twoSum(vector& nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};


![在这里插入图片描述](https://img-blog.csdnimg.cn/b332a36da4d84edfac2a4aedf3d7f35f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9f3729ea9f0945f88b2bfac811e6ea2f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7d0bc113a01949a5876b99aa1480eb3c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


### 3. 无重复字符的最长子串


![在这里插入图片描述](https://img-blog.csdnimg.cn/1e2fb325b5884605add96fd354bcb872.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e8eebdf18ec945a6993ddc42f2fc6805.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/81531245a8ad4af5b2765fb05129bcce.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
public:
int lengthOfLongestSubstring(string s) {
// 哈希集合,记录每个字符是否出现过
unordered_set occ;
int n = s.size();
// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
int rk = -1, ans = 0;
// 枚举左指针的位置,初始值隐性地表示为 -1
for (int i = 0; i < n; ++i) {
if (i != 0) {
// 左指针向右移动一格,移除一个字符
occ.erase(s[i - 1]);
}
while (rk + 1 < n && !occ.count(s[rk + 1])) {
// 不断地移动右指针
occ.insert(s[rk + 1]);
++rk;
}
// 第 i 到 rk 个字符是一个极长的无重复字符子串
ans = max(ans, rk - i + 1);
}
return ans;
}
};


### 13. 罗马数字转整数


![在这里插入图片描述](https://img-blog.csdnimg.cn/b36dd8c0403e49a3adaefaf07f1f9a13.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/38fa5e84337d4f8e91453e4f8f6c35c1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


![在这里插入图片描述](https://img-blog.csdnimg.cn/678fef233e544205a527c0f079c6f349.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
private:
unordered_map<char, int> symbolValues = {
{‘I’, 1},
{‘V’, 5},
{‘X’, 10},
{‘L’, 50},
{‘C’, 100},
{‘D’, 500},
{‘M’, 1000},
};

public:
int romanToInt(string s) {
int ans = 0;
int n = s.length();
for (int i = 0; i < n; ++i) {
int value = symbolValues[s[i]];
if (i < n - 1 && value < symbolValues[s[i + 1]]) {
ans -= value;
} else {
ans += value;
}
}
return ans;
}
};


### 17. 电话号码的字母组合


![在这里插入图片描述](https://img-blog.csdnimg.cn/0aebd95df7604f8aa61000129f4693ef.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/48c567836e2648168925050ac23b243d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f66c6f3ff9564a8aaf978eb079ce7e91.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
public:
vector letterCombinations(string digits) {
vector combinations;
if (digits.empty()) {
return combinations;
}
unordered_map<char, string> phoneMap{
{‘2’, “abc”},
{‘3’, “def”},
{‘4’, “ghi”},
{‘5’, “jkl”},
{‘6’, “mno”},
{‘7’, “pqrs”},
{‘8’, “tuv”},
{‘9’, “wxyz”}
};
string combination;
backtrack(combinations, phoneMap, digits, 0, combination);
return combinations;
}

void backtrack(vector<string>& combinations, const unordered_map<char, string>& phoneMap, const string& digits, int index, string& combination) {
    if (index == digits.length()) {
        combinations.push\_back(combination);
    } else {
        char digit = digits[index];
        const string& letters = phoneMap.at(digit);
        for (const char& letter: letters) {
            combination.push\_back(letter);
            backtrack(combinations, phoneMap, digits, index + 1, combination);
            combination.pop\_back();
        }
    }
}

};


### 剑指 Offer 03. 数组中重复的数字


![在这里插入图片描述](https://img-blog.csdnimg.cn/93b02d1017c74953a3ba839a65040465.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0c47f3b796714983a6dc0f37c78c1f88.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
public int findRepeatNumber(int[] nums) {
Set set = new HashSet();
int repeat = -1;
for (int num : nums) {
if (!set.add(num)) {
repeat = num;
break;
}
}
return repeat;
}
}


### 169. 多数元素


![在这里插入图片描述](https://img-blog.csdnimg.cn/1c5d082d70414b2db581da107f8a58c1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/68c4f747206f4306b0f3b1caa945bae4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



class Solution {
public:
int majorityElement(vector& nums) {
unordered_map<int, int> counts;
int majority = 0, cnt = 0;
for (int num: nums) {
++counts[num];
if (counts[num] > cnt) {
majority = num;
cnt = counts[num];
}
}
return majority;
}
};


![在这里插入图片描述](https://img-blog.csdnimg.cn/18c1d79a8ec24b39ab2d424c4c27adff.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


### 217. 存在重复元素


![在这里插入图片描述](https://img-blog.csdnimg.cn/619cf06c41534004b7ece8f7ec5fd380.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b83a7dfc7fcf435fba8192a53eb8a2b2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bacf29ab82d84ba694bfd3f59a37984c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


### 242. 有效的字母异位词


![在这里插入图片描述](https://img-blog.csdnimg.cn/66de4af003a54c9484b3454f894f6dd8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/317efb33549640f59a370363c4e4e0f0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP54aKY29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值