随笔分类 - 算法
摘要:题目:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现的次数
阅读全文
摘要:题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 大佬的题解: https://leetcode-cn.com/problems/maximum-subarray/solution/dong-tai-gui-hua-fen-zhi-fa-p
阅读全文
摘要:1. 满二叉树(full binary tree) 如果二叉树的高度为 h,树的节点数为 2^h 1,h≥0,就称此树为满二叉树。 2. 完全二叉树(complete binary tree) 如果二叉树的高度为 h,树的节点数小于 2^h 1,编号从上到下、从左到右一一对应(如果只有一个子树,必须
阅读全文
摘要:图的遍历 深度优先遍历 有些类似前序遍历,从图的某一顶点开始遍历,被访问过的顶点就做上已访问的记号,接着遍历此顶点所有相邻且未访问过的顶点中的任意一个顶点,并做上已访问的记号,再以该点为新的起点继续进行深度优先的搜索。 这种遍历方法结合了递归和堆栈两种数据结构的技巧,由于此方法会造成无限循环,因此必
阅读全文
摘要:二者均是抽象数据类型( Abstract Data Type, ADT ) 堆栈在 Python 中包含两种方式,分别是数组结构(以List仿真数组结构)和链表结构 用数组实现堆栈 设计算法简单。但是,如果堆栈本身大小是可以变动的,而数组大小只能事先规划和声明好,那么数组规划大了会浪费空间,小了不够
阅读全文
摘要:1. 静态数据结构( static data structure ) 数组:使用连续分配的内存空间( contiguous allocation )来存储有序表中的数据。读取修改任一元素的时间都是固定的,删除加入数据时需要移动大量的数据。 在建立静态数据结构的初期就必须声明最大可能要占用的固定内存空
阅读全文
摘要:静态查找(Static Search):在查找过程中,该查找数据不会有添加、删除或更新等操作。 动态查找 (Dynamic Search) 顺序查找法/线性查找法 将数据一项一项地按顺序逐个查找,不管数据顺序如何,都得从头到尾遍历一次。 优点:查找前不需要任何处理与排序。 缺点:慢。适合小数据。 二
阅读全文
摘要:直接移动 ( 交换数据位置 ) 逻辑移动 ( 改变指针,更快 ) 冒泡排序法 / 交换排序法 从第一个元素开始,比较两个相邻元素的大小,若大小顺序有误,则对调后再进行下一次元素比较,确定最后一个元素位于正确的顺序。接着再进行第二次扫描,直到完成所有元素的排序。 选择排序法( Selection So
阅读全文
摘要:数据 整理分析(算法 + 数据结构) 信息 (1) 基本数据类型(Primitive Data Type):或称标量数据类型(Scalar Data Type)。整数、浮点数、布尔、字符。 (2) 结构化数据类型(Structured Data Type):也称虚拟数据类型(Virtual Data
阅读全文
摘要:算法需要符合的条件 1. input 2. output 3. definiteness 明确性 4. effectiveness 有效性 5. finiteness 有限性 分治法 Divide and Conquer 把大规模问题 依照相同的概念 分解成多个小规模子问题,各个击破,最后在将各子问
阅读全文
摘要:题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶示例 2: 输入: 3 输出:
阅读全文
摘要:题目: 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整
阅读全文
摘要:题目: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100"示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 来源:力扣(LeetCode)
阅读全文
摘要:题目: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。示例 2: 输
阅读全文
摘要:题目: 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 示例: 输入: "Hello World" 输出: 5 来源:力扣(LeetCode) 解答: class Solu
阅读全文
摘要:题目: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶: 如果你已经实现复杂度为 O(n) 的解法,
阅读全文
摘要:题目: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ("一个一") , 即 11。 11 被读作 "two 1s" ("两个一"), 即 21。 21 被读作 "
阅读全文
摘要:题目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2示例 2: 输入: [1,3,5,6], 2 输出: 1示例 3: 输入: [1,3
阅读全文
摘要:题目: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "
阅读全文
摘要:题目: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums
阅读全文

浙公网安备 33010602011771号