LeetCode
~加油~
Tdurian
你总会迎来那束光 或早或晚
展开
-
【面试手撕】洗牌算法
解题思路: 每次从原始数组中随机选取一个元素,可以理解为每次取出元素的索引值是数组所有索引值的一个随机值, 所以不难得出取出的索引值为Math.floor(Math.random()*array.length);然后每次取出一个元素后,都要将其从原始数组里移除,数组长度就会减一。这两天面试遇到的一道面试题。原创 2023-08-17 21:04:01 · 114 阅读 · 1 评论 -
LeetCode 79: 打家劫舍II <动态规划>
跟打家劫舍I差不多,只是没偷第一家就可以偷最后一家, 偷了就不能偷最后一家,得取两种情况的最大值。原创 2023-06-30 21:27:31 · 83 阅读 · 0 评论 -
面试常考算法题:牛客TOP101_BM86_大数加法
首先考虑到输入的两个字符串的长度可能不一样, 所以先通过补0的操作让两个字符串长度一样,计算时需要考虑到进位值,两字符串里对应数字相加所得结果可以分为两部分,一部分为进位值,一部分为除进位后的结果值。原创 2023-06-24 15:44:08 · 96 阅读 · 1 评论 -
LeetCode 198: 打家劫舍 <动态规划>
首先定义dp数组 并理清dp数组的含义:dp[i] 表示偷到第i家(包括第i家)能偷的最多偷窃金额 状态转移方程的确定:对于每一家,其实只有偷与不偷两种情况,所以偷到这家时能获得的最多偷窃金额就是在这两种情况下所能获得的最大值。 ①偷的话,那上一家肯定是不能偷的,所以这种情况下所能获得的金额为dp[i-2] + nums[i]. ②不偷的话,这种情况下所能获得的金额为就跟偷到上一家获得的金额一样的,为dp[i-1] 所以状态转移方程为:原创 2023-06-21 15:35:37 · 71 阅读 · 0 评论