hash table easy
来源:互联网 发布:如何打造网络爆款微信 编辑:程序博客网 时间:2024/05/16 17:21
Hash table (easy)
1. Two Sum
class Solution {
public:
vector<int>twoSum(vector<int>& nums, int target)
{
vector<int> vec;
map<int,int> index;
for(int i=0;i<nums.size();i++)
{
if(index.find(target-nums[i])!=index.end())
{
vec.push_back(index[target-nums[i]]);
vec.push_back(i);
break;
}
index[nums[i]]=i;
}
return vec;
}
};
202. Happy Number
class Solution {
public:
bool isHappy(int n)
{
set<int> visited;
while(n!=1)
{
if(visited.find(n)!=visited.end())
return false; //如果能在set里找到这个数,说明出现循环
visited.insert(n);
int sum=0;
while(n)
{
sum+=(n%10)*(n%10);
n/=10;
}
n=sum;
}
return true;
}
};
204. Count Primes
此方法超时
class Solution {
public:
int countPrimes(int n)
/* {
int count=0;
for(int i=2;i<n;i++)
{
if(isprime(i))
count++;
}
return count;
}
bool isprime(int n)
{
if(n==1)
return false;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
return false;
}
return true;
}
*/
厄拉多塞筛法
{
bool *del=new bool[n]; // 标记是否被划去
del[2]=false;
for(int i=3;i<n;i++)
{
if(i%2==0)
del[i]=true; // 2的倍数全部划去
else
del[i]=false;
}
for(int i=3;i<n;i+=2)
{
if(!del[i]) // 之后第一个未被划去
{
if(i*i>n) break; // 当前素数的平方大于n,跳出循环
for(int j=2;i*j<n;j++)
del[i*j]=true;
}
}
int count =0;
for(int i=2;i<n;i++)
{
if(!del[i])
count++;
}
delete[] del;
return count;
}
};
205. Isomorphic Strings
class Solution {
public:
/*string transferstr(string s)
{
char table[128]={0};
char temp='0';
for(int i=0;i<s.length();i++)
{
char c=s.at(i); //s.at(n)表示返回下标为n的字符
if(table[c]==0)
{
table[c]=temp;
temp++;
}
s[i]=table[c];
}
return s;
}*/
string transferstr(string s)
{
map<char,int> s2i;
for(int i=0;i<s.length();i++)
{
if(s2i.find(s[i])==s2i.end())
{
s2i[s[i]]=s2i.size();
s[i]=s2i[s[i]];
}
else
s[i]=s2i[s[i]];
}
return s;
}
bool isIsomorphic(string s, string t)
/*{
if(s.length()!=t.length())
return false;
if(transferstr(s)==transferstr(t))
return true;
return false;
}*/
{
return transferstr(s)==transferstr(t);
}
};
217. Contains Duplicate
class Solution {
public:
bool containsDuplicate(vector<int>&nums)
/*{
map<int,int>index;
for(int i=0;i<nums.size();i++)
{
if(index.count(nums[i]))
return true;
index[nums[i]]=1;
}
return false;
}*/
/*{
set<int>s(nums.begin(),nums.end());
if(s.size()!=nums.size())
return true;
else
return false;
}*/
{
sort(nums.begin(),nums.end());
if(unique(nums.begin(),nums.end())!=nums.end())
return true;
else
return false;
}
};
class Solution {
public:
boolcontainsDuplicate(vector<int>& nums)
{
map<int,int> index;
for(int i=0;i<nums.size();i++)
{
index[nums[i]]++;
}
map<int,int>::iteratorit=index.begin();
for(;it!=index.end();it++)
{
if(it->second>=2)
return true;
}
return false;
}
};
219. Contains Duplicate II
class Solution {
public:
boolcontainsNearbyDuplicate(vector<int>& nums, int k)
{
map<int,int> index;
for(int i=0;i<nums.size();i++)
{
if(index.find(nums[i])!=index.end()&&(i-index[nums[i]])<=k)
{
return true;
}
index[nums[i]]=i;
}
return false;
}
};
242. Valid Anagram
class Solution {
public:
bool isAnagram(string s, string t)
{
if(s.size()!=t.size())
return false;
int hash[26]={0};
for(int i=0;i<s.size();i++)
++hash[s[i]-'a'];
for(int i=0;i<t.size();i++)
{
if(hash[t[i]-'a']==0)
return false;
--hash[t[i]-'a'];
}
return true;
}
};
class Solution {
public:
bool isAnagram(string s, string t)
{
if(t.size()!=s.size())
return false;
map<char,int> index;
for(int i=0;i<s.size();i++)
{
index[s[i]]++;
}
for(int i=0;i<t.size();i++)
{
if(index[t[i]]==0)
return false;
index[t[i]]--;
}
return true;
}
};
290. Word Pattern
class Solution {
public:
bool wordPattern(string pattern, stringstr)
{
map<char,int> p2i;
for(int i=0;i<pattern.length();i++)
{
if(p2i.find(pattern[i])==p2i.end())
{
p2i[pattern[i]]=p2i.size();
pattern[i]=p2i[pattern[i]];
}
else
pattern[i]= p2i[pattern[i]];
}
map<string,int>s2i;
istringstream ss(str); //空格、回车、换行都是默认的分界符
string word;
string str_res;
while(ss>>word)
{
if(s2i.find(word)==s2i.end())
{
s2i[word]=s2i.size();
str_res+= s2i[word];
}
else
str_res+= s2i[word];
}
return pattern==str_res;
}
};
349. Intersection of Two Arrays
class Solution {
public:
vector<int>intersection(vector<int>& nums1, vector<int>& nums2)
{
set<int> num;
vector<int> res;
for(int i=0;i<nums1.size();i++)
num.insert(nums1[i]);
for(int i=0;i<nums2.size();i++)
{
if(num.find(nums2[i])!=num.end())
{
num.erase(nums2[i]);
res.push_back(nums2[i]);
}
}
return res;
}
};
class Solution {
public:
vector<int>intersection(vector<int>& nums1, vector<int>& nums2)
{
map<int,int> index;
set<int> res;
for(int i=0;i<nums1.size();i++)
index[nums1[i]]++;
for(int i=0;i<nums2.size();i++)
{
if(index.find(nums2[i])!=index.end())
res.insert(nums2[i]);
}
returnvector<int>(res.begin(),res.end());
}
};
350. Intersection of Two Arrays II
class Solution {
public:
vector<int>intersect(vector<int>& nums1, vector<int>& nums2)
{
map<int,int> index;
vector<int> res;
for(int i=0;i<nums1.size();i++)
index[nums1[i]]++;
for(int i=0;i<nums2.size();i++)
if(index[nums2[i]]>0)
{
res.push_back(nums2[i]);
index[nums2[i]]--;
}
return res;
}
};
389. Find the Difference
class Solution {
public:
char findTheDifference(string s, string t)
{
map<char,int> s2i;
for(int i=0;i<s.length();i++)
s2i[s[i]]++;
for(int i=0;i<t.length();i++)
{
if(s2i[t[i]]!=0)
s2i[t[i]]--;
else
return t[i];
}
}
};
class Solution {
public:
char findTheDifference(string s, string t)
{
map<char,int> index;
for(int i=0;i<t.size();i++)
{
index[t[i]]++;
}
for(int i=0;i<s.size();i++)
{
if(index[s[i]]>0)
index[s[i]]--;
}
map<char,int>::iteratorit=index.begin();
for(;it!=index.end();it++)
{
if(it->second>0)
return it->first;
}
}
};
409. Longest Palindrome
class Solution {
public:
int longestPalindrome(string s)
{
map<char,int> index;
vector<char> result;
for(int i=0;i<s.length();i++)
{
index[s[i]]++;
}
int c = 0;
int count = 0;
for(map<char, int>::iteratoriter= index.begin(); iter != index.end(); iter++)
{
if(iter->second%2==0) count +=iter->second;
else
{
count += iter->second -1;
c = 1;
}
}
return count+c;
}
};
438. Find All Anagrams in a String
class Solution {
public:
vector<int> findAnagrams(string s,string p)
{
map<char,int> mp;
vector<int> res;
for(int i=0;i<p.size();i++)
{
mp[p[i]]++;
}
int i=0,j=0;
for(;i<s.size();)
{
for(;j-i<p.size()&&mp.count(s[j])&&mp[s[j]]>0;j++)
mp[s[j]]--;
if(j-i==p.size())
res.push_back(i);
if(j==i)
j++;
else
mp[s[i]]++;
i++;
}
return res;
}
};
447. Number of Boomerangs
class Solution {
public:
intnumberOfBoomerangs(vector<pair<int, int>>& points)
{
int res=0;
for(int i=0;i<points.size();i++)
{
map<int,int> index;
for(int j=0;j<points.size();j++)
{
intdx=points[i].first-points[j].first;
intdy=points[i].second-points[j].second;
index[dx*dx+dy*dy]++;
}
for(map<int,int>::iteratorit=index.begin();it!=index.end();it++)
res+=(it->second)*(it->second-1);
}
return res;
}
};
463. Island Perimeter
class Solution {
public:
intislandPerimeter(vector<vector<int>>& grid)
{
int sum=0;
int m=grid.size();
int n=grid[0].size();
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(grid[i][j])
{
if(i==0||grid[i-1][j]==0)sum++;
if(i==m-1||grid[i+1][j]==0)sum++;
if(j==0||grid[i][j-1]==0)sum++;
if(j==n-1||grid[i][j+1]==0)sum++;
}
}
}
return sum;
}
};
500. Keyboard Row
class Solution {
public:
vector<string>findWords(vector<string>& words)
{
set<char>row1={'q','Q','w','W','e','E','r','R','t','T','y','Y','u','U','i','I','o','O','p','P'};
set<char>row2={'a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L'};
set<char>row3={'z','Z','x','X','c','C','v','V','b','B','n','N','m','M'};
vector<string> res;
for(int i=0;i<words.size();i++)
{
bool f1=true,f2=true,f3=true;
for(char ch:words[i])
{
if(f1)
{
auto it=row1.find(ch);
if(it==row1.end())
f1=false;
}
if(f2)
{
auto it=row2.find(ch);
if(it==row2.end())
f2=false;
}
if(f3)
{
auto it=row3.find(ch);
if(it==row3.end())
f3=false;
}
}
if(f1||f2||f3)
res.push_back(words[i]);
}
return res;
}
};
- Hash Table: EASY
- hash table easy
- [leetcode单元总结]hash table部分easy篇小总结
- Hash Table
- Hash Table
- Hash Table
- Hash Table
- HASH TABLE
- Hash Table
- Hash Table
- hash table
- Hash Table
- Hash Table
- hash table
- Hash Table
- hash table
- Hash Table
- Hash Table
- 《阿里感悟》- 技术人员的职业规划
- Scrapy爬虫入门教程六 Items(项目)
- 2017.03.06回顾
- 如何修改js的编码格式?
- 使用Oracle Data Integrator Studio创建资料档案库
- hash table easy
- Redis Too many open files
- 蓝牙之数据传输问题
- Robot Motion_POJ
- vs15+opencv3.0.0+win7+32位
- ODI 创建Java EE Agent
- hadoop中的排序新思路-附基于spark之上的性能测试
- web前端简历怎么写?
- ODI Studio拓扑结构的创建与配置(MySQL)