自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 矩阵中的路径

矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 注意: 输入的路径不为空; 所有出现的字符均为大写英文字母; 样例 matrix= [ [“A”,“B”,“C”,“E”], [“S”,“F”,“C”,“S”], [“A”,“D”,“E”,“E”] ] str=“BCCE” , return “true”

2022-01-17 17:00:23 436

原创 旋转数组的最小数字

旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 数组可能包含重复项。 注意:数组内所含元素非负,若数组大小为0,请返回-1。 样例 输入:nums=[2,2,2,0,1] 输出:0 class Solution: def findMin(self, nums): """ :type

2022-01-13 19:40:25 80

原创 斐波那契数列

斐波那契数列 输入一个整数 n ,求斐波那契数列的第 n 项。 假定从0开始,第0项为0。(n<=39) 样例 输入整数 n=5 返回 5 class Solution(object): def Fibonacci(self, n): """ :type n: int :rtype: int """ if n == 0: return 0 a = 0 b = 1

2022-01-11 20:28:51 81

原创 用两个栈实现队列

用两个栈实现队列 请用栈实现一个队列,支持如下四种操作: push(x) – 将元素x插到队尾; pop() – 将队首的元素弹出,并返回该元素; peek() – 返回队首元素; empty() – 返回队列是否为空; 注意: 你只能使用栈的标准操作:push to top,peek/pop from top, size 和 is empty; 如果你选择的编程语言没有栈的标准库,你可以使用list或者deque等模拟栈的操作; 输入数据保证合法,例如,在队列为空时,不会进行pop或者peek等操作; 样

2022-01-10 15:21:46 172

原创 二叉树的下一个节点

二叉树的下一个节点 给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 注意: 如果给定的节点是中序遍历序列的最后一个,则返回空节点; 二叉树一定不为空,且给定的节点一定不是空节点; 样例 假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于2的节点。 则应返回值等于3的节点。 解释:该二叉树的结构如下,2的后继节点是3。 2 / \ 1 3 算法 (模拟) O(h) 这道题目就是让我们求二叉树中给定节点的后继。 分情况讨论即可,如下图所示:

2022-01-07 21:41:26 210

原创 重建二叉树

重建二叉树 输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中每个节点的值都互不相同; 输入的前序遍历和中序遍历一定合法; 样例 给定: 前序遍历是:[3, 9, 20, 15, 7] 中序遍历是:[9, 3, 15, 20, 7] 返回:[3, 9, 20, null, null, 15, 7, null, null, null, null] 返回的二叉树如下所示: 3 / \ 9 20 / \ 15 7 算法 (递归) O(n) 递归建立整棵二叉树:先递归创建左右

2022-01-06 10:34:33 61

原创 替换掉空格

替换空格 请实现一个函数,把字符串中的每个空格替换成"%20"。 你可以假定输入字符串的长度最大是1000。 注意输出字符串的长度可能大于1000。 样例 输入:“We are happy.” 输出:“We%20are%20happy.” class Solution(object): def replaceSpaces(self, s): """ :type s: str :rtype: str """ return

2022-01-05 16:07:35 124

原创 二维数组中的查找

二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 样例 输入数组: [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ] 如果输入查找数值为7,则返回true, 如果输入查找数值为5,则返回false。 算法 (单调性扫描) O(n+m)O(n+m)O(n+m) 核心在于发现每个子矩阵右上角的数的性质:

2022-01-04 12:14:39 315

原创 不修改数组找出重复的数字

不修改数组找出重复的数字 给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思考题:如果只能使用 O(1) 的额外空间,该怎么做呢? (分治,抽屉原理) O(nlogn) 这道题目主要应用了抽屉原理和分治的思想。 抽屉原理:n+1 个苹果放在 n 个抽屉里,那么至少有一个抽屉中会放两个苹果。 用在这个题目中就是

2022-01-03 20:08:05 61

原创 找出数组中重复的数字

找出数组中重复的数字 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1; 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 (数组遍历) O(n) 首先遍历一遍数组,如果存在某个数不在0到n-1的范围内,则返回-1。 下面的算法

2021-12-25 20:26:41 149

原创 正则表达式问题

正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。 输入格式 一个由x()|组成的正则表达式。 输出格式 输出所给正则表达式能接受的最长字符串的长度。 数据范围 输入长度不超过100,保证合法。 输入样例: ((xx|xxx)x|(x|xx))xx 输出样例: 6 题解 X 表示字符 | 表示左右两边都可以,选择一个 递归就是树 对

2021-12-20 21:11:02 105

原创 X的因子链

X的因子链 输入正整数 X,求 X 的大于 1 的因子组成的满足任意前一项都能整除后一项的严格递增序列的最大长度,以及满足最大长度的序列的个数。 输入格式 输入包含多组数据,每组数据占一行,包含一个正整数表示 X。 输出格式 对于每组数据,输出序列的最大长度以及满足最大长度的序列的个数。 每个结果占一行。 数据范围 1≤X≤220 输入样例: 2 3 4 10 100 输出样例: 1 1 1 1 2 1 2 2 4 6 题解: 由算术基本定理得: 所有正整数都可以分解成质因子乘积的形式, N=P[1]d[1

2021-12-19 14:12:35 115

原创 数字的两两配对

两两配对 输入样例1: 6 5 10 2 3 14 5 输出样例1: 5 输入样例2: 2 1 100 输出样例2: 99 题解 结论:排序后,相邻配对必为答案 n = 4的情形易证 假设存在a<b<c<d 只会存在两种配对情况 b和c配对,a和d配对,则ans1 = c - b + d - a a和b配对,c和d配对,则ans2 = b - a + d - c ans1 - ans2 = 2*(c - b) > 0 所以配对情况2优于配对情况1,可扩展到n个数上 #inclu

2021-12-16 20:17:17 1484

原创 两个数组最小的异或值之和

两个数组最小的异或值之和 给你两个整数数组 nums1 和 nums2 ,它们长度都为 n 。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) + (nums1[1] XOR nums2[1]) + … + (nums1[n - 1] XOR nums2[n - 1]) (下标从 0 开始)。 比方说,[1,2,3] 和 [3,2,1] 的 异或值之和 等于 (1 XOR 3) + (2 XOR 2) + (3 XOR 1) = 2 + 0 + 2 = 4 。 请你将 nums2

2021-12-15 21:24:15 1395

原创 dd爱探险

dd爱探险 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 星际中有nn个空间站,任意两个空间站间可以相互跳跃,由空间站x跳跃到空间站y所需要的代价为 P[x][y],注意不保证 p[x][y]= p[y][x],dddd可以任意选择出发的空间站,并通过恰好n−1次跳跃把所有空间站跳完,并且dddd必须选择22次跳跃,其中一次跳跃中进行重力加速,另一次跳跃中进行反重力加速,重力加速会导致当前跳跃代价

2021-12-13 11:43:29 78

原创 最短Hamilton路径

最短Hamilton路径 给定一张 n 个点的带权无向图,点从 0∼n−1 标号,求起点 0 到终点 n−1 的最短 Hamilton 路径。 Hamilton 路径的定义是从 0 到 n−1 不重不漏地经过每个点恰好一次。 输入格式 第一行输入整数 n。 接下来 n 行每行 n 个整数,其中第 i 行第 j 个整数表示点 i 到 j 的距离(记为 a[i,j])。 对于任意的 x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]≥a[x,z]。 输出格式 输

2021-12-10 15:05:04 76

原创 第k个数(二分)

第k个数(二分) 题意 给定一个 n×mn \times mn×m 的方格矩阵,每个方格内都有一个整数元素。 其中第 iii 行第 jjj 列的方格中的元素为 i×ji \times ji×j (行和列都从 1 开始编 믁) 现在,需要你将这 n×mn \times mn×m 个整数按照非严格单调递增的顺序一一写 出。 请问,你写出的第 kkk 个整数是多少。 算法 二分 check函数实现<= mid的数是否有k个即可。 #include<bits/stdc++.h> using na

2021-12-08 14:30:43 122

原创 Leetcode 458. 可怜的小猪

Leetcode 458. 可怜的小猪 (思维或者信息熵) 链接:https://leetcode-cn.com/problems/poor-pigs 题意 有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。 喂猪的规则如下: 选择若干活猪进行喂养 可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。

2021-11-29 20:06:14 79

原创 题解:最大上升子序列和

最大上升子序列和 给定一个长度为 n 的整数序列 a1,a2,…,an。 请你选出一个该序列的严格上升子序列,要求所选子序列的各元素之和尽可能大。 请问这个最大值是多少? 输入格式 第一行包含整数 n。 第二行包含 n 个整数 a1,a2,…,an。 输出格式 输出最大的上升子序列和。 数据范围 对于前三个测试点,1≤n≤4。 对于全部测试点,1≤n≤105,1≤ai≤109。 输入样例1: 2 100 40 输出样例1: 100 输入样例2: 4 1 9 7 10 输出样例2: 20 样例解释 对于样例

2021-11-26 18:04:29 248

原创 git常用命令

git基本概念 工作区:仓库的目录。工作区是独立于各个分支的。 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。 版本库:存放所有已经提交到本地仓库的代码版本 版本结构:树结构,树中每个节点代表一个代码版本。 工作区- >暂存区- >版本库 HEAD指针 安装 安装时:use git from git bash only,其他默认下一步 配置path:git的bin目录 配置git:用户名和邮箱 git config --global use

2021-11-25 20:42:35 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除