首页 > 其他分享 >day06 - 哈希表 part01

day06 - 哈希表 part01

时间:2023-09-13 19:22:37浏览次数:33  
标签:return nums part01 sum day06 numsMap int 哈希

力扣242. 有效的字母异位词

思路,将s串的每个字母哈希表表值++,再将t串每个字母的哈希表值--,如果是有效字母异位词,那么哈希表二十六个字母应该对应的是0.判断如果有不是0 的就返回false,否则为true

代码

bool isAnagram(string s, string t) {
   if (s.size() != t.size())
  {
       return false;
  }
   unordered_map<int, int> wordMap;
   for (int i = 0; i < s.size(); i++)
  {
       wordMap[s[i]]++;
  }
   for (int i = 0; i < t.size(); i++)
  {
       wordMap[t[i]]--;
  }
   for (int i = 'a'; i <= 'z'; i++)
  {
       if (wordMap[i] != 0)
      {
           return false;
      }
  }
   return true;
}
力扣202. 快乐数

思路:挺扯的,因为题里说了,要么是1, 要么无限循环,因此用set记录每次的sum,如果sum重复了就说明进行循环了。

代码如下:

 //取各位数平方和
int getSum(int n)
{
   int sum = 0;
   while (n)
  {
       sum += (n%10) * (n%10);
       n /= 10;
  }
   return sum;
}

bool isHappy(int num)
{
   unordered_set<int> happySet;
   int sum = getSum(num);
   while (true)
  {
       if (sum == 1)
      {
           return true;
      }
       if (happySet.find(sum) !=  happySet.end())
      {
           return false;
      }
       else
      {
           happySet.insert(sum);
      }
       sum = getSum(sum);
       
  }
}
力扣1. 两数之和

哈希表法思路:哈希表key代表数的值,value代表下标位置。

然后如果找到了target-nums[i],返回下标i和map[target-nums[i]],否则将这数加入到哈希表里。

代码

vector<int> twoSum(vector<int>& nums, int target) {
   unordered_map<int, int> numsMap;
   for (int i = 0; i < nums.size(); i++)
  {
       if (numsMap.find(target - nums[i]) != numsMap.end())
      {
           return {i, numsMap[target - nums[i]]};
      }
       else
      {
           numsMap[nums[i]] = i;
      }
  }
   return {};
}
 

 

 

 

 

 

 

标签:return,nums,part01,sum,day06,numsMap,int,哈希
From: https://www.cnblogs.com/xiaowangshu1/p/17700527.html

相关文章

  • 哈希表
                ......
  • day03 - 链表part01
    力扣203.移除链表元素没有难度,只需掌握一个思路,即因为每次删除元素时,我们需要该元素的前一个元素的指针来操作,那么如果删除第一个元素呢?他的前一个元素无法获取因此需要进行特殊处理,而我们可以设置一个虚拟节点作为头结点,这样链表的每个元素的处理方式就统一了。代码如下ListN......
  • 字符串哈希
    字符串哈希可以快速判断字符串是否相同(比KMP还快)字符串前缀哈希法先预处理出来所有前缀的哈希str="ABCDEFGHI";h[0]=0;h[1]="A";//哈希值h[2]="AB";h[3]="ABC";h[4]="ABCD";...求字符串哈希值的方法是将字符串看成一个p进制的数:"ABCD"第一位的数是:A-......
  • 负载均衡之一致性哈希算法详解
    负载均衡之一致性哈希算法详解传统的哈希是直接把数据映射到对应的hash表上,但是当我们的数据量很大的时候,我们会采用多个hash节点来存储的方式来减少存储压力。但是这种hash算法下,如果我们的节点发生了增加或减少的时候,我们就需要将所有数据,重新建立映射关系,这会导致大量的数据......
  • Redis五大基本数据类型之Hash哈希(转载)
    一、概述Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便: Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD: Hash类型的常见命令HSETkeyfieldvalue:......
  • 哈希hash
    将较大的内容转换成较小的值或数的算法有两种进行特定办法求值按照权值计算特定方法求值比方说,将\(x\)(\(1\)~\(10^{18}\)),不是用STL的情况下,判断出现几次。可以运用hash。inthashs(intx){//hash是关键词 return(x%Mod+Mod)%Mod;}按照权值计算令权......
  • 系统设计(架构师)指南5设计一致哈希(HASHING)
    5设计一致哈希(HASHING)要实现横向扩展,就必须在服务器之间高效、均匀地分配请求/数据。一致哈希是实现这一目标的常用技术。不过,首先让我们深入了解一下这个问题。5.1重散列(rehashing)问题如果有n台缓存服务器,平衡负载的常用方法是使用下面的散列方法:serverIndex=hash(key)%N......
  • day24 - 回溯算法part01
    回溯算法理论基础 77. 组合classSolution{public:vector<vector<int>>result;vector<int>path;voiddfs(intn,intk,intstart){if(path.size()==k){result.push_back(path);return;}......
  • 智能合约编写高级篇(二)区块哈希介绍
    本文档从区块哈希基本概念出发,详细介绍了中移链的区块哈希交易接口和应用方向。适用于EOS区块链智能合约高级开发人员,熟悉如何获取当前发生交易所在的区块号和区块哈希前缀,并通过Tapos机制验证交易的有效性。01概述(一)哈希算法哈希算法是可以将任意长度的二进制数据映射为固定长度二......
  • day1 - 数组part01
    力扣704.二分查找思路:假如有n个数,数组下标就是0到n-1,那么第一次从n/2开始找如果这个数比目标数大,说明目标数在左边,于是从0到中间边界找。如果这个数比目标数小,说明目标数在右边,于是从中间边界+1到n-1找。为了明确中间边界是多少,举个例子: 假如数组是:0,1,3,5,6,7,8;target......