
算法与数据结构
文章平均质量分 60
蜡笔小新1980
世界很大,总要去看看
个人博客地址:https://heze-blog.netlify.app/
展开
-
力扣-检查数组是否存在有效划分
【代码】力扣-检查数组是否存在有效划分。原创 2024-03-01 10:31:54 · 359 阅读 · 1 评论 -
根据前序后序遍历求出二叉树
给定两个整数数组,preorder和postorder,其中preorder是一个具有值的二叉树的前序遍历,postorder是同一棵树的后序遍历,重构并返回二叉树。原创 2024-02-26 17:16:04 · 813 阅读 · 1 评论 -
力扣-718最长重复子数组(dp)
给两个整数数组nums1和nums2,返回 两个数组中的子数组的长度。原创 2023-03-15 10:00:50 · 405 阅读 · 0 评论 -
力扣-309最佳买卖股票时机含冷冻期(dp)
给定一个整数数组prices,其中第prices[i]表示第i天的股票价格。设计一个算法计算出最大利润。:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2023-03-05 12:10:05 · 342 阅读 · 0 评论 -
力扣-188买卖股票的最佳时机IV(dp)
给定一个整数数组prices,它的第i个元素prices[i]是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2023-03-05 11:56:05 · 136 阅读 · 0 评论 -
力扣-123买卖股票的最佳时机III(dp)
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成交易。:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2023-03-05 11:43:56 · 132 阅读 · 0 评论 -
力扣-122买卖股票的最佳时机II(dp)
给你一个整数数组 prices ,其中 prices[i]。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回 你能获得的 最大 利润。原创 2023-03-05 11:14:15 · 132 阅读 · 0 评论 -
力扣-337打家劫舍III(dp)
小偷又发现了一个新的可行窃的地区。这个地区只有。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于如果给定二叉树的 root。返回 在,小偷能够盗取的最高金额。原创 2023-03-04 11:42:36 · 501 阅读 · 0 评论 -
力扣-213打家劫舍II(dp)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,今晚能够偷窃到的。原创 2023-03-04 11:22:41 · 464 阅读 · 0 评论 -
力扣-198打家劫舍(dp)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你的情况下 ,一夜之内能够偷窃到的。原创 2023-03-04 11:09:55 · 393 阅读 · 0 评论 -
力扣-139单词拆分(dp)
给你一个字符串和一个字符串列表作为字典。请你判断是否可以利用字典中出现的单词拼接出。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以使用。原创 2023-03-03 14:51:21 · 603 阅读 · 2 评论 -
力扣-494目标和(dp)
给你一个整数数组和一个整数。向数组中的每个整数前添加或,然后串联起所有整数,可以构造一个 表达式:例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。返回可以通过上述方法构造的、运算结果等于。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让最终目标和为 3。原创 2023-03-02 09:56:37 · 190 阅读 · 0 评论 -
力扣-1049最后一块石头的重量II(dp)
有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x原创 2023-02-28 18:13:27 · 115 阅读 · 0 评论 -
力扣-416分割等和子集(dp)
给你一个的数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11]。示例 2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。原创 2023-02-28 17:18:52 · 106 阅读 · 0 评论 -
力扣-96不同的二叉搜索树(dp)
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题。原创 2023-02-28 15:33:54 · 97 阅读 · 0 评论 -
力扣-343整数拆分(dp)
给定一个正整数n,将其拆分为k个的和(k >= 2),并使这些整数的乘积最大化。返回。示例 1:输入: n = 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: n = 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。原创 2023-02-27 18:28:38 · 211 阅读 · 0 评论 -
力扣-63不同路径II(dp)
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。原创 2023-02-27 17:25:55 · 380 阅读 · 0 评论 -
力扣-62不同路径(dp)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?原创 2023-02-27 16:43:25 · 78 阅读 · 0 评论 -
力扣算法之字符串相乘
我开始做这道题的时候,想的是这还不简单,直接将两个String类型的转换为int型或者double型不就行了,然后两个相乘,得到我们的结果然后再String.valueOf()转换成String类型就行了,但是总是错误的。我们做题分析需要看一下提示中的条件,看是否满足我们正常思维中的计算,是否越界,是否超时等情况,然后再看我们的算法,是否有效,动动笔画一画可能过程就出来了。很多时候,我们做题是简单看一下题目,过一遍之后就觉得我们能够怎么做了,但是每当我们点击提交的时候,才发现这种思维不行,实现不了这道题。原创 2022-12-24 16:48:45 · 168 阅读 · 0 评论 -
位运算 算法
比如5的二进制101 与4的二进制100进行按位与&运算得:100,也就是相对于5的101消掉了最右一个1,然后在4的100与3的11按位与得0,然后操作了两次,也就是两个1,至此就可以算出该数二进制1的个数了。二进制中1的个数,我们可以利用n和n-1的按位与&,目的是每次划去n这个数二进制数中的一位1,原因是因为两个相差为1的数按位与后只会消除掉最右边的1。这个跟力扣338的题有些类似,比之不一样的是这是两个数,判断不同位置的,我们可以想到按位异或。异或后只剩下唯一的一次出现的数,即我们的result。原创 2022-12-22 20:05:39 · 753 阅读 · 0 评论 -
认识回溯算法
刚开始我学习回溯是有点不好理解的,毕竟比较抽象,所以需要理清我们不理解的有哪几个点,然后就是借鉴别人的代码,以及看别人是如何解释该问题点的,然后通过多做几道回溯题进行增加印象,达到后面能够自己写一些简单回溯题的目的。。...原创 2022-07-27 13:33:24 · 125 阅读 · 2 评论