随笔分类 -  leetcode

摘要:常用位操作 | 操作 | 含义 | | | : : | : : | : : | | & | 按位与 | 两个位都为1时,结果才为1 | | \| | 按位或 | 两个位都为0时,结果才为0 | | ^ | 按位异或 | 两个位相同为0,相异为1 | | ~ | 按位取反 、| 0变1,1变0,包括最 阅读全文
posted @ 2020-03-31 09:54 depth-perception 阅读(292) 评论(0) 推荐(0)
摘要:题目 思路 这道题可以使用异或操作! 啥叫异或?(图片来源2) 异或操作有以下特点 任何数与0异或结果为其自身: a^0=a 任何数与自己异或,结果为0: a^a=0 异或满足交换律和结合律: a^b^a=(a^a)^b=b 这道题,只有1个数出现了1次,其余都出现了2次,根据上述特点,可以高效求解 阅读全文
posted @ 2020-03-30 18:47 depth-perception 阅读(170) 评论(0) 推荐(0)
摘要:题目 思路 题目要求解连续子数组的和等于k的个数,首先得明确如何求解连续子数组的和? 可以利用前缀和数组来实现任意两个位置连续的子数组的和! 前缀和数组的含义如下: 如下图所示,假设数组nums的长度为n,则前缀和数组presums的长度为n+1,对于任意位置i,presums[i]=presums 阅读全文
posted @ 2020-03-15 22:08 depth-perception 阅读(716) 评论(0) 推荐(0)
摘要:题目 思路 看到数组子区间问题,第一步,先 排序 ,排完再说!!!(本文默认是排序,无需操作) 两个数组求解子区间的交集,我们可以设定两个指针i和j,分别遍历数组A和数组B。 假设数组A中的一个区间为[a1,b1],数组B中的一个区间为[a2,b2],想一下什么时候两个区间无交集? 如图所示,上述情 阅读全文
posted @ 2020-03-14 23:12 depth-perception 阅读(818) 评论(0) 推荐(0)
摘要:题目 思路 解决区间问题,一般是 先排序,然后在观察规律 。 一个区间可以用[start,end]来表示,基于start对整个数组进行排序。 如果相邻的两个区间a和b存在a.end小于b.start的情况,则两区间无交集。 否则,有交集。对于区间a和b产生的合并区间p,p.start一定是这两区间中 阅读全文
posted @ 2020-03-14 21:05 depth-perception 阅读(327) 评论(0) 推荐(0)
摘要:题目 思路 首先从题干中找出关键信息: 原地删除 不使用额外的数组空间 本题与leetcode26( "传送门" )、leetcode80( "传送门" )类似,继续采用 快慢指针法 。设定快慢指针:fats和slow,让fast去探路,根据是否找到目标数,然后决定slow要不要前进,此处fast不 阅读全文
posted @ 2020-03-12 10:08 depth-perception 阅读(163) 评论(0) 推荐(0)
摘要:题目 思路 首先从题干中找出关键信息: 排序数组 原地删除 不使用额外的数组空间 本题和leetcode26类似(详情点击 "传送门" ),涉及数组元素的删除问题,依旧快慢指针的思路。不同的是,可以最多允许2个重复元素,因此, 应检查快指针指向的元素和慢指针指针所指向单元的前一个元素是否相等 。相等 阅读全文
posted @ 2020-03-11 22:53 depth-perception 阅读(142) 评论(0) 推荐(0)
摘要:题目 思路 首先从题干中找出关键信息: 排序数组 原地删除 不使用额外的数组空间 对于数组来说,在尾部进行元素的增删,时间复杂度只有o(1),但在数组中间或者开头进行元素的增删,由于涉及到元素的搬运,时间复杂度就变为o(n).因此对于一般的数组处理问题,要尽可能的在尾部对元素进行处理,这样就可以避免 阅读全文
posted @ 2020-03-11 20:47 depth-perception 阅读(164) 评论(0) 推荐(0)