随笔分类 - 算法
python3
摘要:不管是树,还是图,我们都需要熟练的掌握深度优先遍历算法(DFS)和广度优先遍历算法(BFS) 深度优先遍历 主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是
阅读全文
摘要:题目1:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s:return 0 left = 0 lookup = set() n
阅读全文
摘要:给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 解法: 快慢指针法是解决这类问题的最好方法 1. 设定两个指针,第一个指针一次走一步,第二个指针一次走两步,当第二个指针走到链
阅读全文
摘要:题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 解法: class Solution: def reverseString(self, s: List[st
阅读全文
摘要:给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 ⇐ answer[0] < answer[1
阅读全文
摘要:题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 解题思路:定义两个指针,如果前面那个指针所指的为0,就交换两个数的位置。 解法1: ``` class Solution: def moveZeroes(self, nums: List[int])
阅读全文
摘要:问题描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积
阅读全文
摘要:问题描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 算法: class Solution: def searchInsert(self, nums: List[int
阅读全文
摘要:问题描述: 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用
阅读全文
摘要:class Solution: def search(self, nums: list[int], target: int) -> int: low = 0 high = len(nums) - 1 while low <= high: middle = int((low + high) / 2)
阅读全文