随笔分类 -  算法

摘要:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/slidin 阅读全文
posted @ 2021-03-28 17:45 小千北同学超爱写代码 阅读(88) 评论(0) 推荐(0)
摘要:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 class Solution: def longestValidParentheses(self, s: str) -> int: ans=0 # 最大合法长度(返回值) stack=[-1,] # sta 阅读全文
posted @ 2021-03-17 15:40 小千北同学超爱写代码 阅读(67) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid- 阅读全文
posted @ 2021-03-17 15:21 小千北同学超爱写代码 阅读(77) 评论(0) 推荐(0)
摘要:给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 class Solution: def calculate(self, s): stack = [] pre_op = '+' num = 0 for i, each in enumerate(s): 阅读全文
posted @ 2021-03-17 13:38 小千北同学超爱写代码 阅读(101) 评论(0) 推荐(0)
摘要:根据 逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 来源:力扣(LeetCode)链接:https 阅读全文
posted @ 2021-03-17 13:18 小千北同学超爱写代码 阅读(62) 评论(0) 推荐(0)
摘要:假设文件系统如下图所示: 这里将 dir 作为根目录中的唯一目录。dir 包含两个子目录 subdir1 和 subdir2 。subdir1 包含文件 file1.ext 和子目录 subsubdir1;subdir2 包含子目录 subsubdir2,该子目录下包含文件 file2.ext 。 阅读全文
posted @ 2021-03-17 12:52 小千北同学超爱写代码 阅读(69) 评论(0) 推荐(0)
摘要:给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任 阅读全文
posted @ 2021-03-17 12:26 小千北同学超爱写代码 阅读(81) 评论(0) 推荐(0)
摘要:你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则: 整数 x - 表示本回合新获得分数 x"+" 阅读全文
posted @ 2021-03-17 12:14 小千北同学超爱写代码 阅读(82) 评论(0) 推荐(0)
摘要:给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 class Solution: def mergeKLists(self, lists: List[ListNode]) -> ListNode: l = [] for ln in lists: w 阅读全文
posted @ 2021-03-14 14:44 小千北同学超爱写代码 阅读(59) 评论(0) 推荐(0)
摘要:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if not l1: return l2 阅读全文
posted @ 2021-03-14 14:41 小千北同学超爱写代码 阅读(90) 评论(0) 推荐(0)
摘要:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add- 阅读全文
posted @ 2021-03-14 14:33 小千北同学超爱写代码 阅读(90) 评论(0) 推荐(0)
摘要:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 来源:力扣(LeetCode)链接:https://leetco 阅读全文
posted @ 2021-03-14 14:27 小千北同学超爱写代码 阅读(112) 评论(0) 推荐(0)
摘要:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: if m == n: return head dummy = List 阅读全文
posted @ 2021-03-14 14:03 小千北同学超爱写代码 阅读(80) 评论(0) 推荐(0)
摘要:反转一个单链表。 class Solution: def reverseList(self, head: ListNode) -> ListNode: if head is None or head.next is None: return head # pre 就是那个空链表 pre, cur = 阅读全文
posted @ 2021-03-14 13:53 小千北同学超爱写代码 阅读(47) 评论(0) 推荐(0)
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 class Solution: def swapPairs(self, head: ListNode) -> ListNode: #找到一个新头节点 thead = ListN 阅读全文
posted @ 2021-03-14 13:41 小千北同学超爱写代码 阅读(57) 评论(0) 推荐(0)
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 class Solution: def rotateRight(self, head: ListNode, k: int) -> ListNode: if not head or not head.next: retu 阅读全文
posted @ 2021-03-14 13:28 小千北同学超爱写代码 阅读(67) 评论(0) 推荐(0)
摘要:多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。 来源:力扣(LeetCode)链 阅读全文
posted @ 2021-03-14 13:21 小千北同学超爱写代码 阅读(60) 评论(0) 推荐(0)
摘要:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: dummy = ListNode(0 阅读全文
posted @ 2021-03-14 12:55 小千北同学超爱写代码 阅读(61) 评论(0) 推荐(0)
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 class Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return any 阅读全文
posted @ 2021-03-14 12:43 小千北同学超爱写代码 阅读(36) 评论(0) 推荐(0)
摘要:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: 阅读全文
posted @ 2021-03-14 12:33 小千北同学超爱写代码 阅读(63) 评论(0) 推荐(0)