刷力扣
文章平均质量分 61
墨鱼的s我
这个作者很懒,什么都没留下…
展开
-
每日力扣4
根据异或运算,相同的数异或会得到0,而任意一个数与0异或是本身,而且异或运算满足交换律,因此将所有数进行异或,最后剩下的数就是要找的数。很显然,由于 & 运算左右值可以进行交换而不改变结果,因此这也是一个对称矩阵,而异或运算对于左右值相同时结果为0。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。所以对于 nums 数组,它的查询结果为 nums[i]^。的 xor 美丽值。原创 2023-10-04 15:35:39 · 59 阅读 · 0 评论 -
每日力扣3
在内部用Map维护一个缓存,然后用双向链表去维护一个缓存的值,每次存入一个元素就将该元素注册成链表中的节点,然后放入链表尾部。在调用put时先查看放入的key存不存在,如果存在就直接跟新节点,将节点移入尾部;如果不存在则判断元素个数有没有超过限制,超过了则删除链表头节点,根据该节点对应的key去Map中删除k-v对,然后插入新元素,包装成链表节点放入尾部。在LRU类中维护一个头节点和尾节点。建立链表的尾插入方法,删除头方法,删除指定节点方法,移动到尾部方法。链表结构:key,v,next,pre。原创 2023-10-03 19:51:43 · 41 阅读 · 0 评论 -
每日力扣2
A链表长度为a+b,B链表长度为c+b,因此让两个指针p1,p2分别从A、B的头开始遍历,当A到结尾时p1指向B的头,B到结尾时p2指向A的头,当他们第一次相等时,要么是都为null,此时说明他们没有节点,要么就都指向了同一个节点,此时p1走了a+b+c的路程,而p2指针也走了a+b+c的路程,肯定是第一个节点。l 是翻转的起始节点的前一个节点,r 是翻转结束节点的后一个节点,因此函数的参数是翻转起始节点,l1 ,终止节点是r1,翻转完后,l.next=r1 l1.next = r。,判断链表中是否有环。原创 2023-09-27 19:27:08 · 26 阅读 · 0 评论 -
每日力扣1
贡献法,就是对于一个元素,找到以它为最小值或者最大值的一个区间,对于这个区间内每个包含该元素的子区间,它都会有一个贡献,例如:一个元素i,左区间是L,右区间是R,是(L,R)的开区间。这里右边是大于等于,因为如果是大于的话,对于两个相同,并且挨着的元素,它会造成重复计算。与 LC907思路相同,都是算一个元素对于最后结果产生的共享,但不同的是此题是算最大元素和最小元素的差值,而对于一个元素,它作为区间最大值时产生的贡献将会是正的,因为是最大元素减最小元素,而作为区间最小值时产生的贡献则是负值。原创 2023-09-26 15:41:43 · 29 阅读 · 0 评论