- 博客(33)
- 收藏
- 关注
原创 代码随想录Day32
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。小明的行李箱所能承担的总重量是有限的,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。第一行包含两个整数,n,v,分别表示研究材料的种类和行李所能承担的总重量接下来包含 n 行,每行两个整数 wi 和 vi,代表第 i 种研究材料的重量和价值。
2025-04-03 23:23:11
715
原创 代码随想录Day31
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。x == yx!= yxyy-x最后,石头。返回此石头。如果没有石头剩下,就返回0。输入:stones = [2,7,4,1,8,1]输出:1解释:组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
2025-04-03 23:22:31
762
原创 代码随想录Day30
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。 小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。 第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。
2025-04-03 23:21:57
551
原创 代码随想录Day29
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28。
2025-03-31 22:58:47
1008
原创 代码随想录Day27
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
2025-03-28 15:18:23
528
原创 代码随想录Day26
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中表示水平直径在xstart和xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为x``startx``end, 且满足,则该气球会被。可以射出的弓箭的数量。弓箭一旦被射出之后,可以无限地前进。给你一个数组points返回引爆所有气球所必须射出的弓箭数。
2025-03-27 16:37:18
737
原创 代码随想录Day25
在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则它是的。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]输出: 3解释:从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。
2025-03-27 16:35:47
656
原创 代码随想录Day24
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。
2025-03-25 23:59:36
530
原创 代码随想录Day22
给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
2025-03-22 15:04:25
324
原创 代码随想录Day21
正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。输入:s = “25525511135”输出:[“255.255.11.135”,“255.255.111.35”]
2025-03-21 15:39:44
464
原创 代码随想录Day20
给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。输入:candidates = [2,3,6,7], target = 7输出:[[2,2,3],[7]]解释:2 和 3 可以形成一组候选,2 + 2 + 3 = 7。
2025-03-20 19:18:23
972
原创 代码随想录Day18
给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。输入:root = [1,0,2], low = 1, high = 2输出:[1,null,2]
2025-03-18 17:56:13
833
原创 代码随想录Day17
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和节点 8 的最近公共祖先是 6。
2025-03-17 20:58:56
621
原创 代码随想录Day16
给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。输入:root = [4,2,6,1,3]输出:1。
2025-03-17 00:00:19
567
原创 代码随想录Day15
给定一个不重复的整数数组nums。可以用下面的算法从numsnums返回 nums构建的。输入:nums = [3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]
2025-03-14 15:13:44
267
原创 代码随想录Day14
给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。输入: root = [2,1,3]输出: 1。
2025-03-14 15:12:52
412
原创 代码随想录Day13
给定一个二叉树,判断它是否是 平衡二叉树输入:root = [3,9,20,null,null,15,7]输出:true。
2025-03-12 13:02:14
1024
原创 代码随想录Day12
迭代法采用双端队列, 左子树的内容从前往后入队, 右子树的内容从后往前, 然后每层进行比较, 注意存放的顺序要和我们比较的顺序相一致。输入:root = [3,9,20,null,null,15,7]输入:root = [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数量。输入:root = [4,2,7,1,3,6,9]输入:root = [1,2,2,3,4,4,3]是指从根节点到最远叶子节点的最长路径上的节点数。输出:[4,7,2,9,6,3,1]
2025-03-11 14:00:46
879
原创 代码随想录Day10
给你一个字符串数组tokens,表示一个根据表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。'+''-''*''/'输入:tokens = [“2”,“1”,“+”,“3”,“*”]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。
2025-03-08 14:27:24
635
原创 代码随想录 Day08
给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。**注意:**输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。输入:s = “the sky is blue”输出:“blue is sky the”
2025-03-06 15:05:21
1038
原创 代码随想录 Day07
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须**修改输入数组**、使用 O(1) 的额外空间解决这一问题。输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]
2025-03-05 13:00:40
680
原创 代码随想录 Day06
输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]输入:nums = [1,0,-1,0,-2,2], target = 0。, 我们可不可以拿前两个数组, 对他们的数组求和, 这样就只需要两个。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]
2025-03-04 13:51:00
977
原创 代码随想录 Day05
哈希表(Hash table)又称为散列表, 是根据关键码值(Key value)直接进行访问的数据结构, 通过将关键码值映射到表中的一个位置来访问记录, 从而加快查找速度。这个映射函数称为散列函数(哈希函数), 存放记录的数组称为散列表。
2025-03-03 22:08:33
586
原创 代码随想录 Day04
链表的内容暂时先告一段落了。链表的结构原理看起来简单, 但实际操作起来却有一些麻烦, 这个时候就不要嫌麻烦, 同时一定要先画图, 确定好操作顺序和终止条件。操作节点时, 采用虚头节点的方法可以避免很多麻烦。同时要构建一个操作指针,不要直接拿着头节点去操作,否则整个链表都找不到了。算法思想上,还是得有双指针的概念,这样可以解决大部分的问题。
2025-03-02 13:00:06
1241
原创 代码随想录 Day02
通过这两天的刷题,主要复习了数组的概念、二分查找。同时学习到二分查找有两种书写方法,即左闭右开和全为闭区间的写法,要区分这两种方法的不同点。双指针法通过使用快慢两个指针实现时间复杂度的优化,但在书写过程中要注意明确每个指针的具体含义。这类方法学好之后对滑动窗口以及kmp字符串匹配都有帮助。最后,今天的扩展题是采用的ACM模式,用习惯了idea书写后,要手撕代码,写起来有些费劲。也从侧面体现了对java基础知识掌握地还不够牢固,后续需要巩固这块内容。
2025-02-27 23:32:15
933
原创 代码随想录 Day1
今天的收获是学习到了双指针法,通过双指针解决问题,以及复习java基础相关内容。之前都是用c断断续续刷的leetcode,并没有坚持下来,同时现在还保留了一部分c的习惯,例如创建数组想当然的用而非之后要加强对java基础的学习,同时控制刷题时间,每道题不超过20分钟。
2025-02-26 18:41:57
874
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2