日刷leetcode(第二周)

本周共计刷题26道,涉及快慢指针、滑动窗口、深度优先搜索、广度优先搜索、数学统计、字符串操作、链表处理、二叉树遍历等多种算法与数据结构。重点解析了Boyer-Moore投票算法、二叉树序列化与反序列化、滑动窗口最大值等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日刷leetcode(第二周)

1 + 4 + 3 + 8 + 5 + 4 + 1 = 26

本周共刷👨‍💻 精选 TOP 面试题26道题目。

2020-03-17 周二

  • 287. 寻找重复数
    https://leetcode-cn.com/problems/find-the-duplicate-number/solution/kuai-man-zhi-zhen-de-jie-shi-cong-damien_undoxie-d/

抽屉原理题目
https://leetcode-cn.com/problems/find-the-duplicate-number/solution/er-fen-fa-si-lu-ji-dai-ma-python-by-liweiwei1419/
简单的问题用数学表示
妈咪生日,未能按预期完成任务,移至下一天


2020-03-18 周三

hashmaphashset好?两者底层都一样吧
存储两端跟方法三的以最大值形式存储左端,遍历右端本质上也是一样的

字典统计,时间复杂度O(n)

Boyer-Moore 投票算法
本质上在将多数元素与其他数的数量一一抵消,剩下的一定是多数元素
要求多数元素的数量超过总数的一半


2020-03-19 周四

2020-03-20 周五

暴力遍历O(n^2)python3实现超时

双指针法O(n)

  • 移动最大值那段,无法改变另一端的最小值,高度不会增加,而长度减少,容量只会减少;
  • 因此移动最小值那端,才有机会在长度减少的情况下增加高度,从而扩大容量;
  • 相等时任意移动一端

python3实现双指针代码,左右两端值比较两个逻辑可以合并,为程序逻辑清晰,暂且不改

def maxArea(self, height: List[int]) -> int:
    if len(height) < 2:
        return 0
    left = 0
    right = len(height) - 1
    max_area = 0
    while left < right:
        if height[left] > height[right]:
            boundary = height[right]
        else:
            boundary = height[left]
        area = boundary * (right - left)
        if area > max_area:
            max_area = area
        if height[left] < height[right]:
            left += 1
        else:
            right -= 1
    return max_area

考虑到java求和有数据类型溢出,将加法运算替换为异或运算
0~n与数组nums中所有值异或,异或结果即为缺失值

有个哥们的代码需要进步学习下

数的范围暂时没用到,明日看他人解法学习下

关于python的小根堆/大根堆实现

手撸代码,pq以及 heapq

2020-03-21 周六

https://leetcode-cn.com/problems/distinct-subsequences/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-27/

2020-03-22 周日

2020-03-23 周一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值