首页 > 其他分享 >哈希表基础题217. 存在重复元素、389. 找不同、496. 下一个更大元素 I

哈希表基础题217. 存在重复元素、389. 找不同、496. 下一个更大元素 I

时间:2023-08-28 13:35:47浏览次数:54  
标签:217 return 哈希 nums 元素 str hasmap stack nums2

217. 存在重复元素

 1 class Solution:
 2     def containsDuplicate(self, nums: List[int]) -> bool:
 3         #方法1:set去重,直接比较去重之后数组长度
 4         if len(set(nums)) != len(nums):
 5             return True
 6         else:
 7             return False
 8 
 9         # 方法2:哈希表(字典)
10         numset = {}
11         for i in nums:
12             if i not in numset:
13                 numset [i] = 1
14             else :
15                 return True
16         return False
17         
18         #方法3:排序+判断相邻元素是否重复
19         nums.sort()
20         for i in range(len(nums)-1):
21             if nums[i] == nums[i+1]:
22                 return True
23         return False

389. 找不同

 1 class Solution:
 2     def findTheDifference(self, s: str, t: str) -> str:
 3         #方法1
 4         for i in t:
 5             if t.count(i) - s.count(i) == 1:
 6                 return i
 7         
 8         #方法2:哈希表
 9         hasmap = {}
10 
11         for str in s+t:
12             if str not in hasmap:
13                 hasmap[str] = 1
14             else:
15                 hasmap[str] += 1
16 
17         for str in hasmap:
18             if hasmap[str] % 2 != 0:
19                 return str

496. 下一个更大元素 I

 1 class Solution:
 2     def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
 3         #单调栈+(哈希映射)
 4         result = [-1] * len(nums1)
 5         stack = [0] #存放数组2的0号下标
 6         for i in range(1,len(nums2)):
 7             if nums2[i] <= nums2[stack[-1]]:
 8                 stack.append(i)
 9             else:
10                 #栈不为空再弹出元素 #s是一个持续的过程
11                 while len(stack) != 0 and nums2[i] > nums2[stack[-1]]:
12                     if nums2[stack[-1]] in nums1:
13                         #找出对应值在数组1中的下标
14                         index = nums1.index(nums2[stack[-1]])
15                         result[index] = nums2[i]
16                     stack.pop()
17                 stack.append(i) #找到符合条件的值之后,再将当前元素加入栈中
18         
19         return result

 

   

标签:217,return,哈希,nums,元素,str,hasmap,stack,nums2
From: https://www.cnblogs.com/wuyijia/p/17662018.html

相关文章

  • 鼠标任意拖动元素排列顺序(vue)
    参考地址:https://codesandbox.io/s/condescending-butterfly-enjqpr?file=/src/App.vue <template><div><transition-groupname="drag"class="list"tag="ul"><li@dragstart="dragStart(......
  • 哈希表
    哈希表CSDN哈希表的作用哈希表是在键和值之间通过散列函数建立对应关系,将一个庞大的值域映射到一个比较小的空间,并使得元素的查找可以以\(O(1)\)的效率进行例将\(0\sim10^9\to0\sim10^5\)\[Loc(i)=Hash(key_i)\]常见的散列函数线性定址法:直接取关键字的某个线性函数......
  • excel+python 根据A列分类查找B列值最大的C列元素
    根据C列分类查找B列值最大的C列元素1https://developer.aliyun.com/article/306428......
  • flutter中通过遍历一个数组,给每个元素添加一个开关按钮怎么写
    要通过遍历一个数组给每个元素添加一个开关按钮,你可以使用ListView.builder来构建一个包含开关按钮的列表。下面是一个示例,展示了如何遍历一个数组并为每个元素添加一个开关按钮:List<bool>switchValues=List.generate(5,(index)=>false);ListView.builder(itemCount:sw......
  • hash(哈希)
    hash(哈希)map集合k-map关于哈希操作的命令一般都是以h开头的创建一个哈希hset创建一个哈希127.0.0.1:6379>hsetmyhashf1hello(integer)1读取一个哈希127.0.0.1:6379>HGETmyhashf1"hello"127.0.0.1:6379>设置多个值使用mset的时候如果原本的数据已经存在那么会覆盖......
  • 代码随想录第三天|203.移除列表元素;707.设计链表;206.反转链表
    今天最大的收获不是学会了几道题,而是突然改变了自己之前的想法,总想刷一遍就能把题弄回,这样在遇到难题时会拖延很长的时间,备受挫折,做一两道题就再也不想做了,刷题也就终止了应该做好刷三遍题的准备,第一遍,大量看题,看解题思路,在看题的过程中积累知识和解题技巧,不要迷恋在某一道题上,看......
  • [刷题记录Day6]Leetcode哈希表
    No.1题目有效的字母异位词思路每个字符频率都相同,于是把字母表映射到长度为26的数组上代码publicbooleanisAnagram(Strings,Stringt){intlenS=s.length(),lenT=t.length();if(lenT!=lenS)returnfalse;int[]alphabet=newint[26]......
  • [刷题记录Day7]Leetcode哈希表
    No.1题目四数相加II思路很妙的办法:有四个数组A、B、C、D,用hashMap记录【A、B中数字之和】+【这些和出现的次数】,再遍历C、D中数字组合,寻找【0-C、D中数字之和】在hashMap中出现的次数,并累加本质上,这是把4个数组简化成了2个数组代码publicintfourSumCount(int[]nums1,......
  • 哈希表 part 1
    相关阅读:https://docs.qq.com/doc/DUEtFSGdreWRuR2p4当遇到了要快速判断一个元素是否出现集合里的时候,就需要考虑哈希法。1.两数之和deftwoSum(self,nums,target):""":typenums:List[int]:typetarget:int:rtype:List[int]......
  • js判断一个元素是否在数组内
    vararr=newArray("a","ab");//使用jquery方法if($.inArray("a",arr)>-1){alert("在")}//自己写functioncontains(arr,val){vari=arr.length;while(i--){if(arr[i]===val){......