- 博客(112)
- 收藏
- 关注
原创 一天时间基本掌握Axure RP 11画原型,附练习小案例
我想实现效果:单击1号按钮时,实现Hi矩形块的展示和隐藏,三号文本框的文本同步提示“左边的矩形显示了”,“左边的矩形隐藏了”潮玩小程序的抽盒机需求,可创建「首页→抽盒机页面→盲盒详情页→我的奖品页」的层级关系,点击页面名称即可切换编辑界面。2.选中Hi矩形,设置事件为hi矩形的show/hide->在show条件的时候,动作是给三号文本框设置“在下面的三点按钮,添加自己做好的元件库,方便之后对元件的复用。ctrl+shift+k 对形状位置和大小锁定,左边的矩形隐藏了”,->在hide条件时,同理。
2025-10-24 00:22:59
1441
原创 解析一个JSON数据驱动的房屋搜索实现
这篇文章介绍了一个房屋搜索页面的实现案例,核心内容包括:1. 使用Fetch API获取JSON格式的房屋数据,并通过Promise链处理异步操作和数据解析;2. 动态生成筛选表单选项,包括街道名称(去重处理)和房间数量范围;3. 实现多条件筛选功能,根据用户选择的街道、卧室和浴室数量过滤数据;4. 动态渲染符合条件的房屋信息卡片,包括展示房屋详情和计算总面积。文章还详细讲解了关键技术点:数组的filter()和includes()方法、Promise链式调用机制,以及如何通过DOM操作动态创建页面元素。
2025-09-28 12:11:28
941
原创 事件和事件对象
摘要:本文介绍了JavaScript中的事件处理机制,主要包括事件类型、事件对象和事件流。常见事件有鼠标、键盘、表单及文档/窗口事件。通过addEventListener可绑定事件处理函数,事件对象包含触发元素、事件类型等信息,并提供preventDefault()和stopPropagation()控制事件行为。事件流分为捕获和冒泡阶段,事件委托利用冒泡特性优化性能。这些机制共同实现了丰富的网页交互功能。
2025-09-24 14:55:01
350
原创 代码随想录一刷last day|84.柱状图中最大的矩形
后来想明白:每次我们只会弹出一个元素即mid来计算,因此参与面积计算的就是当前遍历到的柱形和被弹出的柱形,所以要以被弹出的柱形的高度作为面积的高,如果满足st非空且当前元素小于栈头元素,那么会一直弹出栈里的元素。因为,接雨水那道题需要找某一列左右两边第一个高于该列的,而本题要找某一列左右两边第一个低于该列的,正好相反。在头部加上0的目的是为了防止height数组是降序数组的时候如[8,4,3,2]在尾部加上0的目的是为了防止height数组是升序数组的时候如[2,3,4,8]此时大家应该可以发现其实就是。
2023-09-29 18:58:56
344
原创 代码随想录|503.下一个更大元素II,42.接雨水(大厂面试经典)
本题跟题目739类似,唯一不同的是要记录的是下一个更大元素了,而不是下标,而且添加了循环数组。2.如果当前元素等于栈头元素,那么我们先pop栈头元素再push当前元素;3.如果当前元素大于栈头元素,我们先计算能接到的雨水体积再push当前元素。本题将单调栈与循环数组结合起来,可以把数组看成是原来的两倍相当于模拟循环。求出每一列可以接收多少雨水,第一列和最后一列无法接收雨水,1.如果当前元素小于栈头元素,那么直接push当前元素;
2023-09-29 17:28:02
314
原创 代码随想录之单调栈|739. 每日温度,496.下一个更大元素 I
如果当前元素大于栈顶下标对应的元素,说明就是在nums2中找到了第一个更大的,这时对栈进行非空判断,如果当前nums2栈顶元素也在map中出现的话,说明是nums1需要的,我们找到这个元素在nums1的下标位置index,这时候把当前遍历下标对应的元素值 赋值给index。如果当前元素小于等于栈顶下标对应的元素,说明当前元素不是要寻找的第一个更大,直接将其下标入栈;上面有点绕,总而言之,就是在nums2中寻找nums1中元素的右边最大,其次遍历nums2数组:注意栈存放的是nums2元素的下标,是下标!
2023-09-24 18:50:07
351
原创 动态规划之编辑距离总结篇体会到carl的用心良苦
给定字符串和,判断是否为的子序列。这道题可以用双指针也可以用动规,关于动规:当s[i - 1] 与 t[j - 1]相等时, dp[i][j]=dp[i-1][j-1]+1;当s[i-1]和t[j-1]不相等时,,继续匹配,所以dp[i][j]=dp[i][[j-1]
2023-09-24 13:10:53
124
原创 代码随想录|583. 两个字符串的删除操作,72. 编辑距离(有进一步理解到)
1.dp含义dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。2.dp递推公式dp[i][j - 1] + 1 ,因为要做的是同时删除word1[i-1]和word2[j-1],dp[i][j-1]本来就不考虑word2[j-1]了,那么我在删除word1[i-1]是不是就能达到两个元素都删除的效果了,即3.dp初始化从递推公式中,可以看出来,dp[i][0] 和 dp[0][j]是一定要初始化的。
2023-09-24 11:38:10
141
原创 代码随想录|392.判断子序列,115.不同的子序列(需要二刷)
从递推公式dp[i][j]=dp[i-1][j]和dp[i][j]=dp[i-1][j-1]+dp[i-1][j]来看,dp[0][0]应该是1,空字符串s,可以删除0个元素,变成空字符串t。dp[i][j]都是依赖于dp[i - 1][j - 1] 和 dp[i][j - 1],dp[0][0]表示两个空字符串相同子序列的长度,dp[i][0]表示下标为i-1的字符串s与空字符串t的相同子序列的长度,所以dp[0][0],dp[i][0]都初始化为0。4.遍历顺序从前往后。
2023-09-23 11:18:00
151
原创 代码随想录|1143.最长公共子序列,1035.不相交的线,53. 最大子序和(贪心或动规实现)
否则,我们需要在dp[i][j]记录下之前遍历到text1的前一个字符串或者text2的前一个字符串中公共字符串长度的较大者,即Math.max(dp[i-1][j],dp[i][j-1])dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。从递推公式可以看出dp[i]是依赖于dp[i-1]状态,dp[0]就是递推公式基础,跟据dp含义dp[0]=nums[0]dp[i]表示包括下标i的最大连续子序列和为dp[i]
2023-09-22 23:56:32
125
原创 代码随想录|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组(非常不理解了)
本题中,正确定义dp数组的含义十分重要。
2023-09-20 20:29:26
140
原创 代码随想录|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV
那么dp[0][0]表示第0天持有股票,此时的持有股票就一定是买入股票,因为不可能有前一天推出来,所以dp[0][0]=-prices[0]同样dp[i][1]取最大的,dp[i][1]=max(dp[i-1][1],prices[i]+dp[i-1][0]);所以dp[i][0]应该选所得现金最大的,所以dp[i][0]=max(dp[i-1][0],-prices[i]);dp[i][j]中 i表示第i天,j为 [0 - 4] 五个状态,dp[i][j]表示第i天状态j所剩最大现金。
2023-09-17 21:17:58
155
原创 代码随想录|198.打家劫舍,213.打家劫舍II, 337.打家劫舍 III
3.状态标记递归// 执行用时:0 ms , 在所有 Java 提交中击败了 100% 的用户// 不偷:Max(左孩子不偷,左孩子偷) + Max(又孩子不偷,右孩子偷)// 偷:左孩子不偷+ 右孩子不偷 + 当前节点偷代码实现。
2023-09-15 00:16:03
213
原创 代码随想录第46天|139.单词拆分,了解多重背包,背包总结
核心五步确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组01背包问题,跟416 分割等和子集很像,先遍历物品再倒序遍历背包。
2023-09-10 14:58:14
238
原创 代码随想录第45天|70. 爬楼梯,322. 零钱兑换,279.完全平方数
凑足金额为j-coins[i]的最少个数是dp[j-coins[i]],那么只需加上一个钱币coins[i]即dp[j-coins[i]]+1就是dp[j],所以dp[j]要取所以dp[j-coins[i]]+1中最小的。递推公式:dp[j]=min(dpp[j-coins[i]]+1,dp[j]);这道题的时候卡住了,一开始在for循环里面是写的if(coins[i]<=j)这个条件,然后出现下面用例报错: 后面优化成 if (dp[j - coins[i]]!所以下标非-元素都应该是最大值。
2023-09-10 11:25:34
257
原创 代码随想录第43天|416. 分割等和子集,1049. 最后一块石头的重量 II, 494.目标和, 474.一和零(一窍不通)
思路本题是01背包的应用题动态五部曲:1.确定dp数组以及下标的含义dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。本题中物品重量是nums[i],物品价值也是nums[i]那么如果背包容量为target, dp[target]就是装满 背包之后的重量,所以 当 dp[target] == target 的时候,背包就装满了。2.确定递推公式3.dp数组如何初始化本题初始化为0就可以了4.确定遍历顺序。
2023-09-09 20:42:05
206
原创 代码随想录|二维数组的01背包问题,优化-一维数组的01背包问题
一维的dp的for循环顺序不可以反过来写,必须for循环先遍历物品再遍历背包(如果换了这个顺序,那么造成的结果是每个容量的背包只会被放入一个物品),而且需要倒序遍历背包(如果正序遍历背包的话一个物品会被放置多次)注意以上问题都是在候选人把代码写出来的情况下才问的。
2023-09-09 16:11:54
457
原创 代码随想录第40天|62.不同路径,63. 不同路径 II
到达右下角那格的路径数量要么是从上来的,要么是从左来的dp[i][j]含义:表示到达(i,j)的路径数初始化:因为题目说明了只能往下或者往右走,所以第一行和第一列初始化为1代码实现。
2023-09-04 21:46:58
231
原创 代码随想录第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯,动态规划开始啦!!
然后再写代码,如果代码没通过就打印dp数组,看看是不是和自己预先推导的哪里不一样。如果打印出来和自己预先模拟推导是一样的,那么就是自己的递归公式、初始化或者遍历顺序有问题了。如果和自己预先模拟推导的不一样,那么就是代码实现细节有问题。
2023-09-03 00:22:12
290
原创 738.单调递增的数字 ,968.监控二叉树 +贪心总结
968.监控二叉树 (一刷跳过)738.单调递增的数字示例:如将322变成成单调递增的最大数字即299,如3442变成3399首先要将n转换成字符数组,其次遍历数组进行两次判断:第一次是遍历数字时求当前最大的数字max。然后只在max<arr[i]的时候才更新max和对应的下标idx第二次要判断是否有arr[i]>arr[i+1],如果是那么要将arr[idx]减1,同时将之后的位数都替换成'9'代码实现968.监控二叉树 (一刷跳过)贪心总结。
2023-09-02 23:10:24
261
原创 代码随想录第35天|860.柠檬水找零 , 406.根据身高重建队列(很多细节点注意一下),452. 用最少数量的箭引爆气球
860.柠檬水找零思路比较简单。
2023-09-02 14:03:28
134
原创 代码随想录训练营第34天|1005. K 次取反后最大化的数组和, 134. 加油站,135.分发糖果 (需要二刷)
根据题目给出数组元素的范围为【-100,100】,所以可以新建一个数组number把nums的元素映射到number数组中,然后遍历number数组找到最小数字,如果把所有负数都取反后k还是>0,那么就要将最小的正数取反,这个地方要注意正数在number的映射是大于100的,要取反应该重新调整i的位置,即i=200-i;方便后面的求和运算代码实现这里有1个坑 :这种情况,因为最小值是正数的,在while循环后i的大小就停止了所以要加上这段代码纠正i的位置出现的错误:画图理解。
2023-09-02 00:02:13
91
原创 代码随想录第31天|认识贪心算法,455.分发饼干,376. 摆动序列,53.最大子数组和
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。再举一个例子如果是有一堆盒子,你有一个背包体积为n,如何把背包尽可能装满,如果还每次选最大的盒子,就不行了。这时候就需要动态规划。因为每次取最大体积的盒子可能导致最终背包有部分位置是空闲的,就无法装满整个背包。
2023-08-27 16:53:22
144
原创 8/26 回溯法 周总结 记录个人的想法
3.递归逻辑:这里涉及到去重操作,引入一个used数组,因为同一树层不可以有相同元素,但是同一树枝可以有,我们通过used[i-1]来判断是在树枝还是树层遍历了相同元素,如果used[i-1]是false说明就是同一树层,否则说明是在树枝。1.递归函数参数和返回值,注意这道题可以先对nums数组进行排序,然后参数中含有startIndex,如果是有序数组,那么再遍历到一处是path元素之和大于target,那么后面就都不用考虑了。:和79题区别是nums可能包含重复元素,求不重复的所有子集(包括空集)。
2023-08-26 20:48:45
214
原创 代码随想录第29天|491.递增子序列,46.全排列,47.全排列II
这道题的特点是有序的子序列(不能对原数组排序),最终结果集res不能有重复子集。所以这道题又是子集又是去重。
2023-08-26 14:15:57
185
原创 代码随想录第28天|93. 复原 IP 地址,78.子集, 90.子集II
从图中可以看出,同一树层上重复取2 就要过滤掉,同一树枝上就可以重复取2,因为同一树枝上元素的集合才是唯一子集!情况就不同了,本题明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,而是分割的段数作为终止条件。的区别是也可以不使用used数组来去重,因为递归的时候下一个startIndex是i+1而不是0。其实子集也是一种组合问题,因为它的集合是无序的,子集{1,2} 和 子集{2,1}是一样的。就是startIndex已经大于数组的长度了,就终止了,因为没有元素可取了,
2023-08-23 23:13:06
168
原创 代码随想录第27天|39. 组合总和,40.组合总和II,131.分割回文串
回溯三部曲:1.递归函数参数和返回值2.递归终止条件3.单层搜索的逻辑。
2023-08-21 23:00:14
231
原创 代码随想录第25天|216.组合总和III ,17. 电话号码的字母组合
来举一个例子,n = 4,k = 4的话,那么第一层for循环的时候,从元素2开始的遍历都没有意义了(不足k个)。首先要遍历digits的每一个数字,一个数字对应一个字符串str,如digits=“23”,可以得到str1=“abc”,str2=“def”,我们求str1和str2的所有组合。举个例子,n = 4,k = 3, 目前已经选取的元素为0(path.size为0),n - (k - 0) + 1 即 4 - ( 3 - 0) + 1 = 2。遍历的范围是可以剪枝优化的,怎么优化呢?
2023-08-19 18:50:24
170
原创 代码随想录第24天|初步了解回溯三部曲
回溯是递归的副产品,只要有递归就会有回溯。。提到了回溯法的效率,回溯法其实就是暴力查找,并不是什么高效的算法。最后我们讲到回溯法解决的问题都可以抽象为树形结构(N叉树),并给出了回溯法的模板。
2023-08-18 17:55:46
234
原创 代码随想录第23天|669. 修剪二叉搜索树 ,108.将有序数组转换成(平衡)二叉搜索树 , 538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树思路1.确定终止条件修剪的操作并不是在终止条件上进行的,所以就是遇到空节点返回就可以了。2.确定单层递归的逻辑:如果root(当前节点)的元素小于low的数值,那么应该递归右子树,并返回右子树符合条件的头结点。如果root(当前节点)的元素大于high的,那么应该递归左子树,并返回左子树符合条件的头结点。3.接下来要将下一层处理完左子树的结果赋给root->left,处理完右子树的结果赋给root->right。最后返回root节点代码实现。
2023-08-17 16:30:43
125
原创 代码随想录第22天|235.二叉搜索树的最近公共祖先,701. 二叉搜索树中的插入操作, 450.删除二叉搜索树中的节点
今天都是涉及对BST的操作235.递归后序遍历,寻找root.val是否在目标区间[p.val,q.val]之间,是则直接return root;否则继续递归701.将值插入到BST中,如果当前节点root==null,说明我们找到了要插入的位置,直接return newnode;否则(根据给定val和root.val的比较)继续递归左子树和递归右子树450.大体递归框架和701是一样的,但是在处理root.val=val的情况下又分了五种情况考虑,思考的点是要如何处理要删除的节点的左右子树。
2023-08-16 16:05:43
197
原创 代码随想录算法训练营第十九天|530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数 ,236. 二叉树的最近公共祖先 (二刷)
处理中间节点逻辑:比较当前节点值和当前节点的前一个节点值是否相等,如果相等计数器count++,同时我们将count与记录最大频数的maxCount比较,确定是否需要更新maxCount。思路:二叉树搜索树(BST)是有序的,题目要寻找的众数可能不是唯一的,因此我们需要遍历二叉树把符合要求的数值放入结果列表resList,最后将结果列表转换成数组。思路,二叉搜索树是有序的,所以我们可以有序遍历树dfs中序遍历,记录当前节点的值及其前一个节点的值进行比较,我们使用了pre指针和当前指针root指针的技巧。
2023-08-15 20:48:43
79
原创 代码随想录算法训练营第十八天|654.最大二叉树, 617.合并二叉树, 700.二叉搜索树中的搜索,98.验证二叉搜索树
思路:递归,这道题和利用中序和后序数组构造树以及利用前序和中序数组构造树两道题类似,终止条件:当遍历数组的范围为0,直接返回null 或只有一个元素则返回这个元素单层递归逻辑:我们每次需要找到nums数组中的最大值,根据最大值节点划分左右子树,对左右子树传入通过最大值划分好的区间索引进行dfs代码实现。
2023-08-14 19:45:00
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅