首页 > 其他分享 >LeetCode 刷题—集合

LeetCode 刷题—集合

时间:2024-09-09 10:26:25浏览次数:11  
标签:set self 元素 key 集合 my LeetCode 刷题

一:集合

1、特点:元素没有顺序;不重复

2、集合可以用来检擦某个元素是否存在;或者检查是否从在重复的元素

3、常见的操作:

#创建集合
my_set={1,2,3,4,5}
#添加元素
my_set.add(6)
#访问元素(集合是无序的;不能通过下标索引访问元素;只能通过遍历访问元素)
for i in my_set:
    print(i)
#删除元素
my_set.remove(5)
my_set.add(9)#等价与将5修改为9
#查找元素
if 3 in my_set:
    print("yes")
#集合的长度
length=len(my_set)
print(length)
#集合的排序
sorted_set = sorted(my_set)
print(f"Sorted set: {sorted_set}")

二:刷题

217 存在重复元素

(1)思路1:使用hash表;判断当前元素是否在新的容器当中;如果在的话返回True;否则将当前元素加入到新的容器当中;进行下一轮判断;当数组种的元素都遍历完了之后还没有符合条件就返回False

(2)思路2:利用集合的特点直接一步解决

class Solution:
    def func(self,nums):
        nums_set=set(nums)
        return len(nums_set)!=len(nums)

nums = [1,2,3]
solution=Solution()
result=solution.func(nums)
print(result)

**705 构建哈希集合 **

class MyHashSet:

    def __init__(self):
        # 初始化一个大小为 10^6 + 1 的布尔数组
        self.size = 10**6 + 1
        self.data = [False] * self.size

    def add(self, key: int) -> None:
        # 将对应索引位置设为 True,表示 key 存在于集合中
        self.data[key] = True

    def contains(self, key: int) -> bool:
        # 返回对应索引位置的布尔值,表示集合中是否存在 key
        return self.data[key]

    def remove(self, key: int) -> None:
        # 将对应索引位置设为 False,表示从集合中移除 key
        self.data[key] = False

标签:set,self,元素,key,集合,my,LeetCode,刷题
From: https://www.cnblogs.com/gsupl/p/18404036

相关文章

  • 0906, 0909 shell编程与基础算法(leetCode )
    0906哈希表的基本知识:哈希表(HashTable)又称散列表,是除顺序存储结构、链式存储结构和索引表存储结构之外的又一种存储结构。哈希碰撞:解决办法开放定址法:是一类以发生冲突的哈希地址为自变量,通过某种哈希冲突函数得到一个新的空闲的哈希地址的方法。(1)线性探测法从发生......
  • LeetCode刷题笔记9.2-9.9
    leetCode刷题笔记(9.2-9.9)48.旋转图像(9.3)1)图像即二维数组,图像的旋转本质上是二维数组的旋转变换2)二维数组从外层来看,是若干个子数组的集合,子数组内部维护各自的元素,即若干个row里是row.length个column3)由此可理解下面几个关于二维数组的函数:创建二维数组并初始化int[][]......
  • Java中的集合框架深度解析:从ArrayList到ConcurrentHashMap的性能考量
    Java中的集合框架深度解析:从ArrayList到ConcurrentHashMap的性能考量大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Java的集合框架为开发者提供了多种数据结构,每种数据结构都有其特定的使用场景和性能特征。本文将深度解析Java中的主要集合类,从Array......
  • C++小游戏集合3个(不定时更新)1
    前言在Dvec++中想做游戏是很难的,但我不这么想,在下写了一些小游戏给客官看看一,2048#include<iostream>#include<vector>#include<ctime>#include<cstdlib>usingnamespacestd;classGame_2048{public:Game_2048();~Game_2048();voidintroduction()......
  • 【JavaScript】LeetCode:16-20
    文章目录16无重复字符的最长字串17找到字符串中所有字母异位词18和为K的子数组19滑动窗口最大值20最小覆盖字串16无重复字符的最长字串滑动窗口+哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新......
  • Day07 字符串part01| LeetCode 344. 反转字符串,541. 反转字符串II,卡码网:54.替换数字
    反转字符串344.反转字符串classSolution{publicvoidreverseString(char[]s){intlens=s.length;intright,left;if(lens%2!=0)//奇数个{right=lens/2+1;left=lens/2-1......
  • Day03 链表part01| LeetCode 203. 移除链表元素,707. 设计链表,206. 反转链表
    链表理论基础链表一种通过指针串联在一起的线性结构数据域指针域(存放指向下一个节点的指针,最后一个节点的指针域指向NULL)入口节点——head头节点链表类型单链表双链表两个指针域一个指向下一个节点一个指向上一个节点循环链表首尾相连约瑟夫环问题......
  • Day04 链表part02| LeetCode 24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个,160.
    两两交换链表中的节点24.两两交换链表中的节点classSolution{publicListNodeswapPairs(ListNodehead){//设置虚拟头节点ListNodedummy=newListNode(0,head);ListNodecur=dummy;while(cur.next!=null&......
  • LeetCode 刷题—树
    一:树1、树描述的是一个父子关系;有节点;根节点;叶子节点三个相关的概念2、树的高度;深度;层3、二叉树:每个节点最多只有两个孩子4、完全二叉树:除了叶子节点;每个孩子并不要求都为两个孩子(从上到下,从左到右依次填满节点)5、满二叉树:除了叶子节点;每个节点都有两个孩子6、二叉树的遍历......
  • LeetCode //C - 350. Intersection of Two Arrays II
    350.IntersectionofTwoArraysIIGiventwointegerarraysnums1andnums2,returnanarrayoftheirintersection.Eachelementintheresultmustappearasmanytimesasitshowsinbotharraysandyoumayreturntheresultinanyorder. Example1:......