05 2022 档案
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 扩充(字符串相加) class Solution { public: string addStrings(string num1, string num2) { int
阅读全文
posted @ 2022-05-31 01:11
失控D大白兔
摘要:给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 ###1. 暴力求解 该问选择合适的暴力方式也有一定的难度,既要遍历所有可能的矩形,又要尽可能减少重复运算 可以考察以每个点为右下角的最大矩阵,即在二重循环遍历中,计算每个点所
阅读全文
posted @ 2022-05-28 14:12
失控D大白兔
摘要:###1. Function #default values to the functions def greet(who="Colin"): print("Hello,", who) #make choices in the function print("Splitting", total_ca
阅读全文
posted @ 2022-05-27 20:55
失控D大白兔
摘要:n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1) 第一个整数是 0 一个整数在序列中出现 不超过一次 每对 相邻 整数的二进制表示 恰好一位不同 ,且 第一个 和 最后一个 整数的二进制表示 恰好一位不同 给你一个整
阅读全文
posted @ 2022-05-27 16:30
失控D大白兔
摘要:###1.递归判断 从上往下递归的时候,使左边所有子树都小于根节点,右边所有子树都大于根节点 那么对于左子树要传入一个上界,对右子树传入一个下界 为了同一操作,对左右子树既传入上界也传入下界,并且上下界值会随着节点的更新发生改变,范围逐渐收缩 class Solution { public: boo
阅读全文
posted @ 2022-05-27 14:33
失控D大白兔
摘要:###数据导入 import numpy as np import pandas as pd # 使用pandas读取csv数据,数据类型为dataframe,相当于字典加数组,第一行为索引特征 data = pd.read_csv('data/kaggle_house_price_predicti
阅读全文
posted @ 2022-05-27 03:10
失控D大白兔
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 在遍历过程中,左边的很多信息对右边仍然有用处,不是单纯的求一个左侧最大高度或者最大面积 所以无法用动态规划来求解,而且对于每一个待考虑的矩阵,对其扩张的时候,有用
阅读全文
posted @ 2022-05-27 02:21
失控D大白兔
摘要:给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 对于最优问题计算,考虑用动态规划,这里dp[i][j]设为 为word1前i个字符和word2前j个字符的最少操
阅读全文
posted @ 2022-05-26 19:52
失控D大白兔
摘要:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路:对于是否可行问题考虑用回溯法,递归s串中的下标,同时遍历可选字典数组,进行匹配,匹配失败选择其他项,防止
阅读全文
posted @ 2022-05-26 19:47
失控D大白兔
摘要:把字符串 s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串 现在给定另一个字符串 p 返回 s 中 唯一 的 p 的 非空子串 的数量 看似是两个个字符串进行匹配的题目,实际上还是评估一个串,因为无限环绕串满足特定规律 所以只需提取出字符串p中符合规律的子串即可
阅读全文
posted @ 2022-05-25 18:59
失控D大白兔
摘要:给定一个m x n二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用 ###1
阅读全文
posted @ 2022-05-25 00:27
失控D大白兔
摘要:给你一个无重复元素的整数数组candidates和一个目标整数target,找出 candidates中可以使数字和为目标数 target的所有不同组合,并以列表形式返回,你可以按任意顺序 返回这些组合 candidates中的同一个数字可以无限制重复被选取,如果至少一个数字的被选数量不同则两种组合
阅读全文
posted @ 2022-05-22 20:20
失控D大白兔
摘要:给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个表达式 返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目 ###1. 回溯法(全遍历) public: int res = 0; int f
阅读全文
posted @ 2022-05-22 17:30
失控D大白兔
摘要:实现 pow(x,n) ,即计算 x 的 n 次幂函数 ###1. 递归分治 先考虑指数正数的情况 求x的n次幂函数可以转换成求两个⌊n/2⌋的幂函数之积,由于两个是相同的,运算时间直接减少一半 通过递归使得求解时间成为对数级,需要注意的是分别讨论n的奇偶性 由于使用递归具有一定空间复杂度 clas
阅读全文
posted @ 2022-05-20 17:46
失控D大白兔
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树 平衡二叉树满足子树都为平衡二叉树且左右子树高度差的绝对值小于1 ###1. 平衡性和高度判断分离 从上往下对每一个节点判断其左右子树的高度是否满足要求 以及其左右子树是否是平衡二叉树 时间复杂度为O(n2) 可以发现对每个节点进行最大高度计算时,其实跟其
阅读全文
posted @ 2022-05-20 00:14
失控D大白兔
摘要:###1. 最少的硬币个数 给你一个整数数组 coins,表示不同面额的硬币;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的**最少的硬币个数** 。如果没有任何一种硬币组合能组成总金额,返回-1 。 你可以认为每种硬币的数量是无限的。 跟完全平方数解法完全一致,不过完全平方
阅读全文
posted @ 2022-05-19 14:54
失控D大白兔
摘要:###动态规划 给你一个整数n,返回和为n的完全平方数的最少数量 。 完全平方数是一个整数,其值等于另一个整数的平方,换句话说,其值等于一个整数自乘的积。 例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 思路: 回溯法常用来遍历输出全部路径,以及解决可达性问题 对于这种最优问题
阅读全文
posted @ 2022-05-19 14:43
失控D大白兔
摘要:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 ###1. 暴力法(超时) 三重循环(列所有数组) class Solution { public: int maxSubArray(vector<int>& nu
阅读全文
posted @ 2022-05-18 21:07
失控D大白兔
摘要:一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表stones(用单元格序号升序表示,请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时,青蛙默认已站在第一块石子上
阅读全文
posted @ 2022-05-18 17:17
失控D大白兔
摘要:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手 。 每一回合,轮到的人拿掉 1-3块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 tru
阅读全文
posted @ 2022-05-17 00:51
失控D大白兔
摘要:###1. 两两比较 把当前最长公共前缀与每一个字符串比较,并进行更新减小 class Solution { public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } str
阅读全文
posted @ 2022-05-16 16:52
失控D大白兔
摘要:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 ###1. 暴力双循环 双指针动态维持更新一个无重复子串,每移动一次右指针,判断新加入字符是否在子串中存在 若存在,则找出其在子串中位置,并更新左指针位置,时间复杂度O(n2) class Solution { public: int
阅读全文
posted @ 2022-05-16 09:46
失控D大白兔
摘要:###一. 串的查找 ####1. [最长回文子串(中心扩散/动态规划)](https://www.cnblogs.com/929code/p/16250463.html) ####2. [最长无重复子串(双指针)](https://www.cnblogs.com/929code/p/1627584
阅读全文
posted @ 2022-05-16 08:27
失控D大白兔
摘要:树一般使用递归方式来拆分成子问题 ####1. 合并二叉树 class Solution { public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(!root1&&!root2) return nullptr; if(
阅读全文
posted @ 2022-05-16 08:15
失控D大白兔
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 ####1. 缩小问题规模 注意到旋转整个图像,可以看做由行到列,由列到行,但由于不能使用辅助数组,翻转行会破
阅读全文
posted @ 2022-05-14 21:53
失控D大白兔
摘要:####1. 两数相加 两数相加(尾插法) class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *head = nullptr, *tail = nullptr; int ca
阅读全文
posted @ 2022-05-14 19:59
失控D大白兔
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 ###1. 遍历递归 遍历每一个位置,如果存在,则递归其周围区域,并使总区域数加一,
阅读全文
posted @ 2022-05-14 17:25
失控D大白兔
摘要:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 ####1. 暴力求解 两重循环,时间复杂度O(m*n) class Solution { public: bool searc
阅读全文
posted @ 2022-05-14 14:22
失控D大白兔
摘要:给定一个不含重复数字的数组nums,返回其所有可能的全排列,你可以按任意顺序返回答案 ###1. 不含重复元素排列(回溯法) 每次选一个,转移到下一空间,考虑用回溯思想 遍历选取当前可选数,递归每一位,当最后一位选取结束时记录结果 ``` class Solution { public: vecto
阅读全文
摘要:``` 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 '.' 表示。 ```
阅读全文
posted @ 2022-05-13 13:31
失控D大白兔
摘要:给定一个非负整数数组nums,你最初位于数组的第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 ##1. 回溯法 纯粹当做练手,运行不仅超时,还超内存 使用递归的方式,从当前位置做选择,选择为当前位置能跳的距离,然后转换到下一位置,到达目的结束递归
阅读全文
posted @ 2022-05-12 20:00
失控D大白兔
摘要:给定一个包含非负整数的m×n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 ###1. 动态规划 将问题转化成子问题的方程(递归重复计算耗时过多,以后不再使用反向递归) 状态转移函数:最小路径长度dp[m][n]=min(dp[m-
阅读全文
posted @ 2022-05-11 23:31
失控D大白兔
摘要:###1. 直接插入排序(有序表的扩大) void InsertSort(int *A,int n){ int i,j; for(i=2;i<=n;i++){ //从第二个元素开始遍历n-1次,插入到前面的有序数组中 A[0]=A[i]; //存储待插入元素 for(j=i-1;A[0]<A[j];
阅读全文
posted @ 2022-05-11 21:09
失控D大白兔
摘要:###1. 标题 "#"一级标题 "##"二级标题 "###"三级标题 "####"四级标题 " "或"***" 分割线 ###2. 字体 *斜体、**粗体、***粗斜体 ~~要删除的文字 ~下标、^上标、==强调 ###3. 分层 1. 有序列表(点后有空格) >文字引用分层 任务表 - [x]
阅读全文
posted @ 2022-05-11 16:20
失控D大白兔
摘要:一个机器人位于一个 m x n 网格的左上角 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角 问总共有多少条不同的路径? 思路 1.组合数,总共得移动m+n-2次,其中n-1次为向右,m-1为向下,注意即时运算,别求和防止溢出 点击查看代码 class Solution { publ
阅读全文
posted @ 2022-05-11 09:53
失控D大白兔
摘要:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 ###一. 接雨水I ####1. 暴力求解 根据每一个柱子左右两端最高的柱子,计算其蓄水量,然后把总的加起来,时间复杂度为O(n2) 暴力双重循环 class Solution { public: int
阅读全文
posted @ 2022-05-10 23:39
失控D大白兔
摘要:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 思路 1.暴力求解 计算任意两端点间的储水量,取最大值,性
阅读全文
posted @ 2022-05-10 21:20
失控D大白兔
摘要:###1. 初始化 ``` //数组 int a[10]={1}//第一个元素是1,其余全是0 int a[]={1,2,3,4,5}//可以不指定初始长度 int a[2][5]={{1,2,3,4,5},{6,7,8,9,10}}//初始化二维数组 int *a = (int*)malloc(s
阅读全文
posted @ 2022-05-10 18:13
失控D大白兔
摘要:n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上并且使皇后彼此之间不能相互攻击。 **要求**:任何两个皇后不同行,不同列也不在同一条斜线上, 给你一个整数n,返回所有不同的n皇后问题的解决方案。 每一种解法包含一个不同的n皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和
阅读全文
posted @ 2022-05-10 10:41
失控D大白兔
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 一. 动态规划 经典动态规划类型题目,这种问题关键在于如何将问题规模缩小并且找到边界 即找到状态转移方程和边界条件 很显然跳第n阶的方法,会等于n-2阶和n-1阶之和 即状态转移方
阅读全文
posted @ 2022-05-09 20:42
失控D大白兔
摘要:对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。 ####1. 中心扩散 顺序遍历,对每个点进行左右同时扩散,得到其中心点对应的最大回文串和回文串长度(考虑奇偶串要分别用一个中心和两个中心点进行遍历) 时间复杂度为O(n2),空间复杂度为O(
阅读全文
posted @ 2022-05-09 19:05
失控D大白兔
摘要:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标 思路:求两数和等于目标值,首先考虑二重循环暴力求解,分别将每一个数与所有数进行求和匹配,时间复杂度为O(n2)。进一步可以考虑两求和数一个值大于目标值一半,一个值小于一半
阅读全文
posted @ 2022-05-07 21:50
失控D大白兔