kotlin深度使用
文章平均质量分 59
风一样的航哥
导航/控制/算法
展开
-
配合AI刷leetcode 实现1170
题目思路不难,实现一个函数f(s),实现一个二分查找,然后遍历就可以了。复杂度O(nlogn)。 于是写出来这样的代码:原创 2023-06-10 11:01:55 · 862 阅读 · 0 评论 -
leetcode 每日一题统计范围内的元音字符串数
题解思路:字符预处理+前缀和原创 2023-06-02 10:20:08 · 326 阅读 · 0 评论 -
leetcode 347 C++和kotlin的解法
该算法的时间复杂度为 $O(n \log n)$,其中 $n$ 是数组的长度。哈希表的插入操作的时间复杂度为 $O(1)$,排序的时间复杂度为 $O(n \log n)$,取出前 k 个元素的时间复杂度为 $O(k)$。空间复杂度为 $O(n)$。先上C++版本的,基本思路是用hashmap统计出现的次数,然后维护一个大小为K的最小堆,最小堆的比较函数使用频率作为比较量。其中用到了自定义的pair数据和比较函数。使用kotlin就充分使用了各种数据直接的转换和库函数,写起来确实简明多了。原创 2023-06-01 15:02:27 · 443 阅读 · 0 评论 -
使用kotlin用回溯法解决电话号码的字母组合问题
我们先定义了一个字母表,将数字映射到对应的字母组合上。接着定义了一个结果集合result。在函数letterCombinations中,我们首先判断特殊情况,如果数字串为空,则返回空列表。否则,我们开始递归调用回溯函数backtrack。 在回溯函数中,我们首先判断是否已经到达数字串的末尾,如果到达,则将当前的组合字符串加入结果集合中。否则,我们取出当前数字所对应的字母组合,对于每一个字母,都将其加入到组合字符串中,并递归调用backtrack函数,最后将该字母从组合字符串中删除(回溯到上一步)。 这样原创 2023-05-28 12:12:21 · 958 阅读 · 0 评论 -
leetcode 1209 学会删除字符串
首先定义一个数据类 CharWithCount,用来表示字符和其出现的次数。然后遍历字符串,对于每个字符,如果栈顶元素和当前字符相同,就将栈顶元素出栈,将其出现次数加一,否则将当前字符作为新的元素入栈。每次入栈或者出栈时,要判断栈顶元素出现次数是否达到了 k,如果是的话就将其出栈。 最后将栈中剩余的元素按顺序拼接成字符串即可。原创 2023-05-25 21:45:00 · 533 阅读 · 0 评论