- 博客(45)
- 收藏
- 关注
原创 第十章 单调栈part01
中,对于数组中的每个元素,从当前元素右边找到第一个比当前元素值更大的元素,将该元素与当前元素的距离保存到一个数组中进行返回。分析过程:情况一:当前遍历的元素T[i]小于栈顶元素T[st.top()]的情况情况二:当前遍历的元素T[i]等于栈顶元素T[st.top()]的情况情况三:当前遍历的元素T[i]大于栈顶元素T[st.top()]的情况栈为空,将73对应的索引0插入栈中,作为栈顶元素此时:stack = [0]当前温度 74 > 栈顶温度 73,满足情况三。
2024-07-24 08:58:10
987
原创 第九章 动态规划part13
给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。
2024-07-23 22:42:50
469
原创 第九章 动态规划part11
给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。
2024-07-23 22:39:40
997
原创 第九章 动态规划part10
给你一个整数数组nums,找到其中最长严格递增子序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组的子序列。
2024-07-23 22:38:25
955
原创 第九章 动态规划part09
给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次,卖k次。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
2024-07-23 22:35:35
882
原创 第九章 动态规划part08
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
2024-07-23 22:34:11
835
原创 第九章 动态规划part07
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。
2024-07-23 22:32:23
634
原创 第九章 动态规划part06
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。
2024-07-23 22:30:59
573
原创 第九章 动态规划 part05
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。小明的行李箱所能承担的总重量为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。
2024-07-23 22:29:35
745
原创 第九章 动态规划part04
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。x == yx!= yxyy-x最后,石头。返回此石头。如果没有石头剩下,就返回0。
2024-07-23 22:27:54
910
原创 第九章 动态规划part03
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。
2024-07-23 22:25:05
980
原创 第九章 动态规划part02
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?
2024-07-23 22:23:48
975
原创 第九章 动态规划part01
(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。给定n,请计算F(n)。
2024-07-23 22:22:35
916
原创 第八章 贪心算法 part05
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
2024-07-23 22:18:05
424
原创 第八章 贪心算法 part04
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中表示水平直径在和之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为xx且满足则该气球会被可以射出的弓箭的数量。弓箭一旦被射出之后,可以无限地前进。给你一个数组points,*返回引爆所有气球所必须射出的弓箭数 *。
2024-07-22 16:48:06
456
原创 第八章 贪心算法 part03
在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则它是的。
2024-07-22 16:46:58
380
原创 第八章 贪心算法 part02
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。
2024-07-22 16:45:53
805
原创 第八章 贪心算法 part01
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i]这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]~ ~。如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
2024-07-22 16:44:22
346
原创 第七章 回溯算法 part04
给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。
2024-07-22 16:43:00
255
原创 第七章 回溯算法part03
正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。
2024-07-22 16:41:35
799
原创 第七章 回溯算法part02
给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。
2024-07-22 16:40:10
317
原创 第六章 二叉树part08
给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。
2024-07-22 16:36:49
272
原创 第六章 二叉树part07
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
2024-07-22 16:35:29
963
原创 第六章 二叉树part01-下
使用一个队列来按顺序访问二叉树的每个节点,同时用一个哈希表来记录每个节点的层级。遍历时,如果碰到一个新层级的节点,就在结果列表中加一个新的子列表。这样,就能一层层地把节点值收集起来,实现了二叉树的逐层遍历。简单来说,就像在排队接水,每个人(节点)按顺序来,按层级分组,确保每一层的人都能按顺序接到水。public:// 结果向量,用于存储每一层的节点值if(root!= nullptr){ // 如果根节点不为空// 创建一个队列,用于BFS遍历// 创建一个哈希表,用于记录每个节点的层级。
2024-06-19 15:44:26
1750
原创 第六章 二叉树part01-上
使用一个队列来按顺序访问二叉树的每个节点,同时用一个哈希表来记录每个节点的层级。遍历时,如果碰到一个新层级的节点,就在结果列表中加一个新的子列表。这样,就能一层层地把节点值收集起来,实现了二叉树的逐层遍历。简单来说,就像在排队接水,每个人(节点)按顺序来,按层级分组,确保每一层的人都能按顺序接到水。public:// 结果向量,用于存储每一层的节点值if(root!= nullptr){ // 如果根节点不为空// 创建一个队列,用于BFS遍历// 创建一个哈希表,用于记录每个节点的层级。
2024-06-19 10:52:29
2111
原创 第五章 栈与队列part02
根据 逆波兰表示法,求表达式的值。有效的运算符包括 + , - , * , /。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 3:输入: [“10”, “6”, “9”, “3”, “+”, “-11”, " * ", “/”, " * ", “17”, “+”, “5”, “+”]输出: 22逆波兰表达式:是一种后缀表达式,所谓后缀就是指运算符写在后面。
2024-06-17 10:47:57
666
原创 第五章 栈与队列part01
使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。
2024-06-17 10:44:54
499
原创 第四章 字符串part02
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world!输出: “world!hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
2024-06-17 10:40:30
608
原创 入门_01_二进制和位运算
将 a 转换为二进制表达式,然后向左移动1位,空位补零,最终的结果就是将a的值乘于2的移动位数的次方,例如向左移动1位,说明将结果乘为原来的2倍。将 a 转换为二进制表达式,然后向右移动1位,空位补零,最终的结果就是将a的值除以2的移动位数的次方,例如向右移动1位,说明将结果除以原来的2倍。上述表达式会先将a,b都转换为2进制表达式,然后按位进行与运算,即只要有二者均为1,那么这个位才为1。上述表达式会先将a,b都转换为2进制表达式,然后按位进行或运算,即只要有一个为1,那么这个位即为1。
2024-06-13 16:38:24
278
原创 第三章 哈希表part02
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。输出:2。
2024-06-13 16:20:06
976
原创 第四章 字符串part01
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]
2024-06-12 23:54:17
847
原创 第三章 哈希表part01
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false你可以假设字符串只包含小写字母。
2024-06-11 21:03:07
773
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人