**242.有效的字母异位词****349. 两个数组的交集****202. 快乐数****1. 两数之和**
242.有效的字母异位词**349. 两个数组的交集202. 快乐数1. 两数之和**
242.有效的字母异位词
题目链接 :
代码 :
class Solution {
public:
bool isAnagram(string s, string t) {
int array_Count_Char_1 [26] ;
int array_Count_Char_2 [26] ;
//cout<< int('a')<<endl;
//bool FlagMark = true ;
for(int i = 0 ; i < 26 ; i++)
{
array_Count_Char_1[i] = 0;
}
for(int i = 0 ; i < 26 ; i++)
{
array_Count_Char_2[i] = 0;
}
for(int i = 0 ; s[i] != '\0' ; i++)
{
array_Count_Char_1[int(s[i] - 97)]++;
}
for(int i = 0 ; t[i] != '\0' ; i++)
{
array_Count_Char_2[int(t[i] - 97)]++;
}
for(int i = 0 ; i < 26 ; i++ )
{
if(array_Count_Char_1[i] != array_Count_Char_2[i])
{
return false ;
}
}
return true ;
}
};
349. 两个数组的交集
题目链接 :
代码 : ( set 实现 版)
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int length_nums1 = nums1.size();
int length_nums2 = nums2.size();
set<int> set_num_nums1 ;
set<int> set_num_nums2 ;
vector<int> vec_CoNums_Receive ;
for(int i = 0 ; i < length_nums1 ; i++)
{
set_num_nums1.insert(nums1[i]);
}
for(int i = 0 ; i < length_nums2 ; i++)
{
set_num_nums2.insert(nums2[i]);
}
set<int>::iterator it_set_num_nums1 = set_num_nums1.begin() ;
while(it_set_num_nums1 != set_num_nums1.end())
{
int num_Temp = *it_set_num_nums1 ;
if( set_num_nums2.find(num_Temp) != set_num_nums2.end() )
{
vec_CoNums_Receive.push_back(num_Temp);
}
it_set_num_nums1++;
}
return vec_CoNums_Receive ; // different core
}
};
代码 : ( set 实现 版)
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int length_nums1 = nums1.size();
int length_nums2 = nums2.size();
unordered_set<int> unordered_set_num_nums1 ;
unordered_set<int> unordered_set_num_nums2 ;
vector<int> vec_CoNums_Receive ;
for(int i = 0 ; i < length_nums1 ; i++)
{
unordered_set_num_nums1.insert(nums1[i]);
}
for(int i = 0 ; i < length_nums2 ; i++)
{
unordered_set_num_nums2.insert(nums2[i]);
}
unordered_set<int>::iterator it_unordered_set_num_nums1 = unordered_set_num_nums1.begin() ;
while(it_unordered_set_num_nums1 != unordered_set_num_nums1.end())
{
int num_Temp = *it_unordered_set_num_nums1 ;
if( unordered_set_num_nums2.find(num_Temp) != unordered_set_num_nums2.end() )
{
vec_CoNums_Receive.push_back(num_Temp);
}
it_unordered_set_num_nums1++;
}
return vec_CoNums_Receive ; // different core
}
};
202. 快乐数
题目链接 :
class Solution {
public:
bool isHappy(int n) {
//unordered_set<int> unordered_set_NumAggregate ;
unordered_set<int> unordered_set_Num_Whole ;
int num_Cache = n ;
int sum_Temp = 0 ;
//cout<< "num_Cache : " << num_Cache << endl ;
unordered_set_Num_Whole.insert(num_Cache);
while( num_Cache != 1 )
{
sum_Temp = 0 ;
while(num_Cache != 0 )
{
sum_Temp += pow((num_Cache % 10),2) ;
num_Cache = num_Cache / 10 ;
}
num_Cache = sum_Temp ;
//cout<< "num_Cache : " << num_Cache << endl ;
if( unordered_set_Num_Whole.find(num_Cache) != unordered_set_Num_Whole.end())
{
return false ;
}
unordered_set_Num_Whole.insert(num_Cache);
}
return true ;
}
};
1. 两数之和
题目链接 :
代码 : (结构体 版 unordered_set ) ( 尚未 疏通 )
class Solution {
public:
struct num_index
{
int num ; // 对 num 属性 进行 Hash 映射
int index ;
};
vector<int> twoSum(vector<int>& nums, int target) {
unordered_set<num_index> unordered_set_SourceNums ;
int length = nums.size() ;
for(int i = 0 ; i < length ; i++ )
{
num_index num_index_Temp;
num_index_Temp.num = nums[i] ;
num_index_Temp.index = i ;
unordered_set_SourceNums.insert(num_index_Temp) ;
//unordered_set_SourceNums.insert(nums[i]) ;
// 把 下标 使用 结构体 作为 其它 结构 存 进去
}
unordered_set<num_index>::iterator it_Work = unordered_set_SourceNums.begin();
unordered_set<num_index>::iterator it_End_unordered_set_SourceNums = unordered_set_SourceNums.end();
for( ; it_Work != it_End_unordered_set_SourceNums ; it_Work++ )
{
num_index num_index_it_Work = *it_Work ;
int num_Correspond = target - num_index_it_Work.num ;
unordered_set<num_index>::iterator it_Receive = unordered_set_SourceNums.find(num_Correspond) ;
num_index num_index_it_Receive = *it_Receive ;
if( it_Receive == unordered_set_SourceNums.end() )
{
continue ;
}
else if( it_Receive == it_Work )
{
continue ;
}
else
{
// 将 下标 集合 添加 至 xx 数组
// /
// 将 下标 数组 添加 至 xx 数组
// /
// 将 下标 组合 提取
//int index1 = int ( (it_Work - unordered_set_SourceNums.begin()) / 4 ) ;
//int index2 = int ( (it_Receive - unordered_set_SourceNums.begin()) / 4 ) ;
//int index1 = std::distance(unordered_set_SourceNums.begin() , it_Work) ;
//int index2 = std::distance(unordered_set_SourceNums.begin() , it_Receive) ;
int index1 = num_index_it_Work.index ;
int index2 = num_index_it_Receive.index ;
int num1 = num_index_it_Work.num ;
int num2 = num_index_it_Receive.num ;
