- 博客(20)
- 收藏
- 关注
原创 算法刷题记录——ACM模式
sys使用标准输入读取数据。`是一个文件对象,代表标准输入流,会遍历每一行输入,直到输入结束。去除首尾的空白字符,split()分割成两个字符串。基本语法map(function,对象),对对象中的每个元素应用例1:将字符串列表转换为整数例2:配合split()处理输入例3:与lambda结合使用squared = list(map(lambda x: x**2, nums)) # 输出 [1, 4, 9]
2025-03-15 03:08:31
622
原创 算法刷题总结——和为K问题
前缀和+哈希表,这里的关键在于,如果你想要找到一个和为 k 的子数组,你可以通过以下方式思考:假设你已经计算了从数组开始到当前位置 i 的前缀和 pre_sum。如果存在一个之前的前缀和 prev_sum,使得 pre_sum - prev_sum = k,那么从 prev_sum 到 pre_sum 的子数组的和就是 k。
2025-01-15 21:47:06
303
原创 算法刷题记录——二分查找
=x可看成>=x+1的索引-1。中查找>=num的最小索引。<x可看成>=x的索引-1。>x可看成>=x+1。这题是找的>=和<=
2024-12-12 22:39:45
249
原创 算法刷题记录——图论
题目:答案:算法的基本思想是遍历网格中的每个细胞,当遇到一个标记为“1”的陆地细胞时,就从这个细胞开始进行深度优先或广度优先搜索,将所有与这个细胞相连的陆地细胞标记为已访问(例如,将它们从“1”变为“0”),这样就找到了一个岛屿。每当我们开始一个新的搜索时,就意味着找到了一个新的岛屿。思考:dfs函数的思想就是找到一个在表格内为1的,然后令它前后左右都为0(当做做个标记,也可以当做防止再找1的时候这块形成干扰。
2024-12-01 22:50:20
1852
原创 算法刷题记录——链表2(快慢指针法合集)
题目:思考:①因为链表“没索引”,所以创建快慢指针很有效的方法!!!②有没有else区别很大!在第一段代码中,位于else块中。这意味着只有当fast.next或为None时,才会执行。换句话说,如果快指针不能继续前进两步,那么函数会返回False,表示链表中没有环。在第二段代码中,位于if块之外。这意味着无论fast.next和的值如何,都会执行。这会导致函数在每次迭代结束时都返回False,即使链表中存在环。
2024-11-24 17:56:11
389
原创 算法刷题记录——链表
首先检查两个链表是否为空,然后初始化两个指针。接着,它进入一个循环,直到两个指针相遇。在循环中,如果指针到达链表末尾,它。,或者如果不存在相交节点,它们都会指向None。
2024-11-23 18:26:22
366
原创 算法刷题记录——矩阵
(1). 遍历矩阵方法,不能(i,j) in matrix(2). 添加新元素时,列表用.append,元组不可变,可用+连接,字典创建新键值对,集合用.add删除时,列表用remove(x)或del x[i],字典用popitem()(这是随机的),集合用remove(x)
2024-11-23 15:33:22
208
原创 算法刷题记录——数组
和max_sum。用于存储当前子数组的和,而max_sum用于存储到目前为止找到的最大和。在每一步中,我们更新为当前元素加上(如果是正数)或当前元素本身(如果是负数)。然后,我们更新max_sum为和max_sum中的较大值。
2024-11-21 21:02:32
295
原创 算法刷题记录——滑动窗口
滑动窗口通常用于解决数组或字符串上的问题,其中你需要找到一个满足特定条件的连续子数组或子字符串。滑动窗口通常由两个指针(或索引)定义,一个指向窗口的起始位置,另一个指向窗口的结束位置。这两个指针可以根据问题的需要向左或向右移动,以调整窗口的大小。滑动窗口的一个典型应用是找到具有唯一元素的最长子数组。在这种情况下,你可以使用一个集合来跟踪窗口内的元素,并在发现重复元素时移动窗口的起始位置。
2024-11-20 20:39:56
1170
原创 算法刷题记录——双指针
双指针是一种在数组或列表中使用的算法技术,用于在 O(n) 时间复杂度内找到满足特定条件的元素对。但两个遍历往往时间复杂度会较高不满足要求,所以思路就是把两个遍历转化为一个遍历——
2024-11-19 16:31:30
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人