
获得徽章 0
- #刷题交流# 第二十六天 小S的字母子序列挑战
题目分析:
判断是否可以从给定的 n 行 m 列的字符矩阵中,选择每行的一个字符,使得这些字符组成的字符串包含子序列 "chi"。
解题思路:
子序列的定义是可以通过删除其他字符从原字符串中获得而不改变相对顺序的字符序列。
可以通过贪心模拟即从每行中选择一个字符,使得这些字符尽可能地接近 "chi" 的顺序。
判断条件:
1、遍历每一行:对于每一行字符串 s,检查当前目标字符 p[j] 是否存在于 s 中。
如果存在,则将指针 j 向后移动一位,表示已经匹配到 "chi" 的下一个字符。
如果不存在,则继续检查下一行。
2、如果最终指针 j 等于 "chi" 的长度,说明已经成功匹配到整个子序列 "chi",返回 True;否则返回 False。展开11 - #刷题交流# 第二十七天 数字分组求偶数和
题目目标:
使得这个新数的各位数字之和为偶数。—— 换句话说,任务是计算出有多少种不同的分组和选择方法可以达到这一目标。
思路:
numbers: 一个由多个整数字符串组成的列表,每个字符串可以视为一个数字组。 需要从每个数字组中选择一个数字。并且该新生成数的各个位上的数是按照第一、二、三......的数组中的顺序表示
通过递归的方式,并判断每一个组合是否为偶数就可以求解结果。
在我列出所有的可能后:
不难发现,每一个前缀组合相同的情况下,最后一个数的奇偶性,决定了是否满足目标。
前缀为偶数,那么最后一位必须为偶数
前缀为奇数,那么最后一位必须为奇数
那么,凭借这个特性,我们是否可以进行一些优化的可能,减少一层的递归,优化时间复杂度和空间复杂度
最后一天啦,完美打卡展开11 - #刷题交流# 第二十二天 小C的最短服务时间优先磁盘调度算法
正在学操作系统,用c++程序模拟了操作系统中磁盘模块对于调度的算法。
这道题是最短时间调度算法。可以先排个序,然后在计算,
题目要求:
模拟最短服务时间优先(SSTF)磁盘调度算法,计算磁头在处理所有请求时总共移动的磁道数。核心信息是每次磁头服务完一个请求后,选择当前距离最近的未处理请求。如果有多个距离相等的请求,优先选择磁道号较小的那个。磁头会在没有请求时停止,直到新的请求到达。
知识扩展——AI
磁盘调度算法:SSTF(Shortest Seek Time First)是一种常见的磁盘调度算法,旨在减少磁头移动的距离,从而提高磁盘访问效率。
这道题确实是贪心的做法,先把小的搞定,形成局部用时最短,尽可能保证整体最短
优先队列:优先队列是一种数据结构,能够在 O(logn) 时间内插入和删除元素,并支持快速获取最小或最大元素。在本题中,等待队列的排序操作可以看作是优先队列的应用。
优先队列的方式确实没想起来,想的还是用哈希存储展开评论1 - #刷题交流# 第十七天 饭馆菜品选择问题
最开始的思路,使用DP来做,因为题目的要求是最小价格,且只有m个菜有蘑菇,所以我认为可以找到满足菜的数量,然后在标记是否符合蘑菇数。这样一来,菜的数量一般都会满足,就需要判断蘑菇m是否满足就可以。
答案的做法是用贪心的策略,局部最优,保证全局可能最优,思路逻辑确实比dp好理解一些,,并且代码量少一些。
但是感觉这道题,用dp的逻辑也没啥问题,也是最小价格,在判断是否满足判断条件,可能是代码逻辑判断有些问题吧展开评论1 - #刷题交流# 第十三天 字符串解压缩
题目要求:
对一个压缩的字符串进行解压缩,其中每个字母后面可能跟随一个数字,表示该字母在解压后的字符串中需要重复的次数。如果字母后面没有数字,则该字母只出现一次。
类似问题总结思路:
字符串处理:遍历、字符判断(字母、数字)、字符串拼接等。
循环控制:通过循环控制指针的移动,逐个处理字符串中的字符。
数字解析:在处理字符串中的数字时,需要将字符转换为整数,并考虑多位数字的情况。展开评论1