如果我有一个数组,其中包含一些字符,例如[a,b,c]
,并且我有另一个数组,其中包含每个字符的各自频率,例如 [2,1,1]
。我现在想遍历一个链表,其中的节点有一些字符串,看看它们是否也有我在原始数组中以相同频率拥有的字符。
我的做法
我在想我需要
一个循环将从原始数组的 index 0
开始,内部的另一个循环将检查该字符串的所有节点,如果我的临时指针为 null,则表示所有节点都有它,如果没有然后他们不这样做,我继续下一个。但是我不确定如何完全实现这种方法,因为我是 c 的新手,而且我想知道是否可以在 O(N)
TIME 中执行此操作,因为我的方法是 O(N 2).
示例输出:对于造成的困惑,我深表歉意
所以如果你有 3 个节点并且每个节点都有一个包含 "nba""tba""rba"
的字符数组
然后输出应该返回 b a
。因为它们在每个节点中出现的次数相同。
最佳答案
因此,您在索引 0 处同时启动 char 数组和 freqarray,然后检查所有节点以查找与字符的相同频率匹配的字符串。我假设您使用某种函数来返回字符串中特定字符的频率。 此外,您的问题要求您遍历所有节点,因此隐含了 O(N^2)。
关于将列表的节点与字符串数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549365/