如果长度不同则肯定为false
声明长度为26的数组,如果s中出现则对应位置+1,t中出现则-1,最后遍历数组,如果都是0则返回true,否则false
1 class Solution { 2 public: 3 bool isAnagram(string s, string t) { 4 if(s.size() != t.size()) return false; 5 int arr[26]; 6 for(int i = 0; i < s.size(); i++){ 7 char sc = s[i]; 8 char tc = t[i]; 9 arr[sc-'a']++; 10 arr[tc-'a']--; 11 } 12 for(int i = 0; i < 26; i++){ 13 if(arr[i] != 0) return false; 14 } 15 return true; 16 } 17 };
声明一个set,用于去重,然后遍历nums2,如果nums1中存在nums2里的数字,则加入到set中
1 class Solution { 2 public: 3 vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { 4 unordered_set<int> set; 5 unordered_set<int> tmp(nums1.begin(),nums1.end()); 6 for(int i = 0; i < nums2.size(); i++){ 7 if(tmp.find(nums2[i]) != tmp.end()){ 8 set.insert(nums2[i]); 9 } 10 } 11 return vector<int>(set.begin(),set.end()); 12 } 13 };
声明一个set,开始循环计算,如果结果为1则跳出循环,返回true。每次的结果对比set,如果set中存在则说明循环计算,则返回false
1 class Solution { 2 public: 3 bool isHappy(int n) { 4 unordered_set<int> set; 5 set.insert(n); 6 while(1){ 7 int sum = 0; 8 while(n){ 9 int tmp = n%10; 10 sum+=tmp*tmp; 11 n/=10; 12 } 13 if(sum == 1) break; 14 if(set.find(sum)!=set.end()){ 15 return false; 16 }else{ 17 set.insert(sum); 18 } 19 n = sum; 20 } 21 return true; 22 } 23 };
声明一个map,key为需要的目标数,value为当前索引,遍历数组,如果map中的key存在当前数字,则返回value和当前索引,否则map中insert(index,target-nums[i])
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 unordered_map<int, int> map; 5 for(int i = 0; i < nums.size(); i++){ 6 if(map.find(nums[i]) != map.end()){ 7 return {map[nums[i]],i}; 8 } 9 map.insert(pair<int,int>(target-nums[i],i)); 10 } 11 return {}; 12 } 13 };
浙公网安备 33010602011771号