随笔分类 -  数据结构与算法

摘要:一个元素每次90度旋转,旋转4次后回到原点,这样我们找出这四个点的坐标一切就简单了 阅读全文
posted @ 2022-08-04 12:32 okokabcd 阅读(67) 评论(0) 推荐(0)
摘要:leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)把所有重复出现的位置进行标记,然后再遍历一遍数组,即可找到没有出现过的数字。进一步优化,可以直接对原数组进行标记:把重复出现的数字在原数组出现的位置设为负数,最后仍然为正数的位置即为没有出现过的数。 阅读全文
posted @ 2022-08-03 12:40 okokabcd 阅读(65) 评论(0) 推荐(0)
摘要:leetcode 504. Base 7 七进制数 (简单)进制转换类的题,通常是利用除法和取模来进行计算,同时也要注意一些细节,如负数和零。如果输出是数字类型而非字符串,则也需要考虑是否会超出整数上下界。 阅读全文
posted @ 2022-08-02 12:36 okokabcd 阅读(223) 评论(0) 推荐(0)
摘要:leetcode 204. Count Primes 计数质数 (Easy)输入一个整数,输出也是一个整数,表示小于输入数的质数的个数。 埃拉托斯特尼筛法,是判断一个整数是否是质数的方法。并且它可以在判断一个整数n时,同时判断所小于n的整数,因此非常适合这个问题。 阅读全文
posted @ 2022-08-01 21:41 okokabcd 阅读(88) 评论(0) 推荐(0)
摘要:leetcode 665. Non-decreasing Array 非递减数列(中等)最多只有一次修改某个数字的机会,问能否将数组变为非递减数组。 阅读全文
posted @ 2022-07-31 18:00 okokabcd 阅读(71) 评论(0) 推荐(0)
摘要:leetcode 406. Queue Reconstruction by Height 根据身高重建队列(中等)这题先要理解题,一个无序数组,数组中每个元素有两个属性,一个表示身高,一个表示前面有几个人和他一样高或更高。现在要把这个数组按其属性排列正确。 阅读全文
posted @ 2022-07-30 22:50 okokabcd 阅读(64) 评论(0) 推荐(0)
摘要:leetcode122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II(简单)每天可以无限次买卖,但是只能持有一支股票。想有最大利润,就得低价买高价卖。如果第二天价格比当前价格高,我们就卖出,把差价加入利润中。若后天价格更高,我们还可以在第二天卖出后再买入。以此类推,遍历完整个数组后即可获得最大利润。 阅读全文
posted @ 2022-07-29 20:37 okokabcd 阅读(58) 评论(0) 推荐(0)
摘要:leetcode 763. Partition Labels 划分字母区间(中等)一个字符串S,将其尽可能多的分割为子字符串,条件是每种字符最多只能出现在一个子串中。上面的示例中,字符串S中有多个a,这些a必须只能在第一个子串中,字母e出现在第二个子串中。这道题难点就是如何找到字符串的断点,即拆分成为子串的位置。 阅读全文
posted @ 2022-07-28 21:53 okokabcd 阅读(67) 评论(0) 推荐(0)
摘要:leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)区间重叠问题,一般都要想到贪心(局部最优等于全局最优) 阅读全文
posted @ 2022-07-27 21:42 okokabcd 阅读(68) 评论(0) 推荐(0)
摘要:leetcode 605. Can Place Flowers 种花问题 (简单)实现:遍历数组,判断当前元素、左侧和右侧都为0就可以种花,可种植花数加1,并将当前元素置为2,防止影响下一元素判断。当可种值花数大于n返回true。 阅读全文
posted @ 2022-07-15 12:45 okokabcd 阅读(68) 评论(0) 推荐(0)
摘要:leetcode 435. Non-overlapping Intervals 无重叠区间(中等)求最小的移除区间个数,等价于尽量多保留不重叠的区间。在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间。因此我们采取的贪心策略为:优先保留结尾小且不相交的区间。 阅读全文
posted @ 2022-07-14 18:44 okokabcd 阅读(90) 评论(0) 推荐(0)
摘要:leetcode 135. Candy 分发糖果(困难)通过两次遍历,分配的糖果就可以满足题目要求了。这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一侧的大小关系。 阅读全文
posted @ 2022-07-13 12:44 okokabcd 阅读(71) 评论(0) 推荐(0)
摘要:leetcode 455. Assign Cookies 分发饼干(简)使用贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。 阅读全文
posted @ 2022-07-12 13:13 okokabcd 阅读(69) 评论(0) 推荐(0)
摘要:leetcode 312. Burst Balloons 戳气球(困难)分治+动态规划,dp[i][j] = maxCoins(nums[i]~nums[j]) 表示从第i个气球到第j个气球的最大值,我们所求答案就是ans = dp[1][n]。 阅读全文
posted @ 2022-07-10 22:15 okokabcd 阅读(71) 评论(0) 推荐(0)
摘要:leetcode 932. Beautiful Array 漂亮数组(中等)leetcode 932. Beautiful Array 漂亮数组(中等) 阅读全文
posted @ 2022-07-09 23:32 okokabcd 阅读(79) 评论(0) 推荐(0)
摘要:实际上就可以变成 () ? () 这种形式,两个括号内分别是各自的表达式,最终会分别计算得到两个整型数组,中间的问号表示运算符,可以是加,减,或乘。 阅读全文
posted @ 2022-07-07 12:52 okokabcd 阅读(60) 评论(0) 推荐(0)
摘要:定义一个max保存遍历过程中出现的最大子数组和,也是返回结果,定义一个dp[i],用来表示以第i个元素为结尾的数组的最大数组和。 阅读全文
posted @ 2022-07-06 21:44 okokabcd 阅读(55) 评论(0) 推荐(0)
摘要:定义一个二维数组dp,其中dp[i][j]表示字符串s的子串s[0, i]是否可以被字符串p的子串p[0,j]匹配,根据正则表达式的不同情况,即星号、点号、非星号点号的字符,我们可以分情况讨论来更新dp数组。 阅读全文
posted @ 2022-07-05 12:59 okokabcd 阅读(57) 评论(0) 推荐(0)
摘要:使用一个二维数组dp[i][j],表示将第一个字符串到位置i为止,和第二个字符串到位置j为止,最多需要几步编辑。 阅读全文
posted @ 2022-07-04 21:43 okokabcd 阅读(57) 评论(0) 推荐(0)
摘要:遍历一次数组,在每个位置i时,记录i位置之前所有价格中的最低价格,然后将当前价格作为售出价格,查看当前收益是不是最大收益即可。 阅读全文
posted @ 2022-07-03 21:43 okokabcd 阅读(68) 评论(0) 推荐(0)