文章目录
169. 多数元素
摩尔投票法:
有一个对摩尔投票法非常形象的比喻:多方混战。
首先要知道,在任何数组中,出现次数大于该数组长度1/2的值最多只有1个。
我们把这道题比作一场多方混战,战斗结果一定只有最多1个阵营幸存,其他阵营被歼灭。数组中的数字即代表某士兵所在的阵营。
我们维护两个潜在幸存阵营A。我们遍历数组,如果遇到了属于A的士兵,则把士兵加入A或中,该队伍人数加一。继续遍历。
如果遇到了一个士兵既不属于A阵营
-
A阵营还有活着的士兵,那么进行一次厮杀,参与厮杀的2个士兵全部阵亡
-
A阵营已经没有士兵了。这个阵营暂时从地球上消失了。那么把当前遍历到的新士兵算作新的潜在幸存阵营,这个新阵营只有他一个人。继续遍历。
大战结束,最后A阵营就是初始人数最多的阵营
class Solution:
def majorityElement(self, nums: List[int]) -> int:
a=-999
anum=0
for num in nums:
if num !=a:
anum-=1
if anum<=0:
a=num
anum=1
else:
anum+=1
return a
242. 有效的字母异位词
直接用python现成的函数
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
sd=Counter(s)
td=Counter(t)
return sd.__eq__(td)
223. 矩形面积
记得判断是否有重叠部分! 对每条边判断
对整体判断会出错(eg:-3*-4=12)
class Solution:
def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
x1=max(ax1,bx1)
y1=max(ay1,by1)
x2=min(ax2,bx2)
y2=min(ay2,by2)
print(x1,y1,x2,y2)
return (ax2-ax1)*(ay2-ay1)-max(0,(x2-x1))*max(0,(y2-y1))+(bx2-bx1)*(by2-by1)