代码随想录刷题第五天 | 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
哈希表重温,好久没用过了,不对,基本上就没怎么用过
class Solution {
public :
bool isAnagram ( string s, string t) {
int record[ 26 ] = { 0 } ;
for ( int i = 0 ; i < s. size ( ) ; i++ ) {
record[ s[ i] - 'a' ] ++ ;
}
for ( int i = 0 ; i < t. size ( ) ; i++ ) {
record[ t[ i] - 'a' ] -- ;
}
for ( int i= 0 ; i< 26 ; i++ ) {
if ( record[ i] != 0 )
return false ;
}
return true ;
}
} ;
用数组和用set 都行,数字过大,用set
class Solution {
public :
vector< int > intersection ( vector< int > & nums1, vector< int > & nums2) {
unordered_set< int > result_set;
unordered_set< int > nums_set ( nums1. begin ( ) , nums1. end ( ) ) ;
for ( int num: nums2) {
if ( nums_set. find ( num) != nums_set. end ( ) ) {
result_set. insert ( num) ;
}
}
return vector < int > ( result_set. begin ( ) , result_set. end ( ) ) ;
}
} ;
class Solution {
public :
vector< int > intersection ( vector< int > & nums1, vector< int > & nums2) {
unordered_set< int > result_set;
int hash[ 1001 ] = { 0 } ;
for ( int num: nums1) {
hash[ num] = 1 ;
}
for ( int num: nums2) {
if ( hash[ num] == 1 ) {
result_set. insert ( num) ;
}
}
return vector < int > ( result_set. begin ( ) , result_set. end ( ) ) ;
}
} ;
class Solution {
public :
int getsum ( int n) {
int sum = 0 ;
while ( n) {
sum = sum + ( n% 10 ) * ( n% 10 ) ;
n = n/ 10 ;
}
return sum;
}
bool isHappy ( int n) {
unordered_set< int > set;
while ( 1 ) {
int sum = getsum ( n) ;
if ( sum== 1 ) {
return true ;
}
if ( set. find ( sum) != set. end ( ) ) {
return false ;
}
else {
set. insert ( sum) ;
}
n = sum;
}
}
} ;
经典第一题,两数之和
class Solution {
public :
vector< int > twoSum ( vector< int > & nums, int target) {
std:: unordered_map< int , int > map;
for ( int i = 0 ; i< nums. size ( ) ; i++ ) {
auto iter = map. find ( target- nums[ i] ) ;
if ( iter!= map. end ( ) ) {
return { iter-> second, i} ;
}
map. insert ( pair < int , int > ( nums[ i] , i) ) ;
}
return { } ;
}
} ;