给定一组n个符号,大小为k以及来自符号集的非重复字符长度k的组合,仅写入ITERATIVE算法以打印可以进行的下一个最高唯一编号.
例如:
Symbols =[1,2,3,4,5]
size = 3;
given combination = 123, result = 124
given combination = 254, result = 312
Run Code Online (Sandbox Code Playgroud) 有两个整数数组,每个都在非常大的文件中(每个文件的大小都大于RAM).如何在线性时间内找到数组中的公共元素.
我找不到解决这个问题的合适方案.有任何想法吗?
我碰到了这个问题,我不确定我的解决方案是否是最佳的.
给定N加权(Wi)和可能重叠的间隔(表示会议时间表),找到进行所有会议所需的会议室的最小数量"&".
|---10------|. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .|---------8---------|
|------8-----| |----------10-----------|
|--------6-------|
Run Code Online (Sandbox Code Playgroud)
对于上述时间表,我们需要两个10和10个容量的会议室.( 我对么 ? )
如果我们有一个容量大于需要的会议室使用它,如果没有符合标准的会议室,建立新房间或增加现有房间,请从一个房间,并从左侧穿过间隔.新的能力.
例:
10点开始 - {10}
8点开始 - {10,8}
10月底结束 - {10-free,8}
6点开始 - {10,8}
结束8 - {10,8-free}
10的开头= {10,8 + = 2}或{10,10}
等等.....
这基本上是贪心的..
题
实现一个函数bool chainable(vector<string> v)
,它接受一组字符串作为参数,并返回true
它们是否可以链接.如果第一个字符串以第二个字符串开头的相同字符结尾,则可以链接两个字符串,例如:
ship->petal->lion->nick = true;
ship->petal axe->elf = false;
Run Code Online (Sandbox Code Playgroud)
我的解决方案
我的逻辑是,如果它的可链接只有一个不匹配的开始和结束.所以我创建了一个开始列表和一个结束列表.像这样.
starts:s,p,l,n
ends: p,l,n,k
Run Code Online (Sandbox Code Playgroud)
如果删除公共元素,列表最多应包含一个项目.即s和k.如果是这样,列表是可链接的.如果列表是循环的,则最终列表为空.
但我想我在这里遗漏了一些案例,
编辑: 好的,我的解决方案有问题.我们能否为此得出最佳算法?
可能重复:
size_t与intptr_t
我的一些代码处理指针并uintptr_t
作为输入,因为它必须使用指针.
我现在必须用整数做同样的事情,所以我想重用那些代码.
是size_t
一样的uintptr_t
吗?我可以更改实现并使用相同的代码指针和整数只需替换uintptr_t
为size_t
?
编写程序以删除在"所有"字符串中出现的片段,其中片段是3个或更多个连续字.
例:
输入::
s1 ="正在下雨,我想开车回家.";
s2 ="下雨了,我想去滑雪.";
s3 ="天气炎热,我想去游泳.";
输出::
s1 ="正在下雨开车回家.";
s2 ="正在下雨去滑雪.";
s3 ="游泳很热.";
删除片段 ="我想要"
该程序将再次测试大文件.效率将被考虑在内.
假设:忽略大写,标点符号.但保留在输出中.
注意:照顾像这样的情况
aaaaabcbcbccc删除会产生更多碎片.
将三个单词短语散列成一个int并将它们存储在一个数组中,用于所有字符串.减少到像数组一样
1 2 3 4 5
3 5 7 9 8
9 3 1 7 9
问题减少到数组的交集.
排序数组.(k*nlogn)
保持k指针.如果发现所有相等的匹配.否则将指针指向最小值.解决上面的注意事项.我正在考虑做一个懒惰的删除,即在最后标记删除和删除短语.
是否存在我的解决方案可能不起作用的情况?我们能否优化我的解决方案/找到最佳解决方案?
给定一组字符串(大集合)和输入字符串,您需要有效地找到输入字符串的所有字符.您将使用什么数据结构.使用它,你会如何找到字谜?
我想到的是这些:
使用地图
a)消除所有字母多于/少于输入的字母.
b)将输入字符放在地图中
c)遍历每个字符串的地图,看看是否所有字母都带有计数.
使用尝试
a)将所有具有正确字符数的字符串放入trie中.
b)遍历每个分支,如果输入中包含字母,则更深入.
c)如果叶子到达这个词是一个字谜
有人能找到更好的解决方案吗?
您在上述方法中发现了哪些问题?
我只是在我的Binary树上写了一个inorder函数,我遇到了这个难题.
class BinaryTree
{
private:
struct Node* o_root;
public:
BinaryTree()
{
o_root = new Node();
o_root->data = 0;
o_root->left = NULL;
o_root->right = NULL;
}
void inorder(Node*root = o_root);//Invalid
};
void BinaryTree::inorder(Node* root = o_root)//Invalid
{
if(root==NULL)
{
return;
}
inorder(root->left);
cout<< root -> data;
inorder(root->right);
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:非静态成员引用必须与特定对象相关
如果我将根节点静态这是有效的.
为什么会这样?如果我有两个二叉树,我会想要对象的特定根,而不是静态成员.我尝试使用这个运算符,但这给了我另一个错误,基本上说在默认参数中不允许使用此运算符.
任何人都可以解释为什么这不起作用以及为什么C++拒绝使用此运算符作为默认参数?
编辑:
我有一个3行的表.
ID NAME REV
1 A 0
1 B 0
1 C 0
2 A 1
2 B 0
2 C 0
3 A 1
3 B 1
Run Code Online (Sandbox Code Playgroud)
我想找到具有特定名称集的ID,REV是相同的示例:Edit2:GBN的解决方案可以完美地工作,但由于我没有创建新表的权限.添加的约束是不能创建新表.
if input = A,B then output is 3
if input = A ,B,C then output is 1 and not 1,2 since the rev level differs in 2.
Run Code Online (Sandbox Code Playgroud) 这是一个艰难的(至少我很难:P):
在不使用任何循环的情况下查找32位数的最高位集的索引.
题
我在C#中需要一个像上面这样的数据结构但是我在访问内容时遇到了问题,我看到我可以用C++做到这一点在c#中是如何完成的?
List<Dictionary<string, List<int>>> data =
new List<Dictionary<string, List<int>>>(5);
Run Code Online (Sandbox Code Playgroud)
当我做数据[0]我得到一个错误说明索引越界..
任何人都可以指出我如何做到这一点.或者我做错了什么?
附录:
- > 我想做什么
我基本上创建了一个数据结构,保留了一个月的计划.因此,每个5周的列表包含 - >活动词典,其中每个活动的值是 - > 7个整数的列表,表示每周每天花在该活动上的小时数.
我有我需要添加空白条目.附加问题是这样的.
- > 查询
现在我将不得不在列表中添加5个空白词典.以及表示每天消耗时间的字典的每个键中的7个整数(初始化为零)的列表.
有没有办法初始化列表中的5个空白词典,并且内部相同,而无需手动创建新词典并添加它们.使用c ++我相信你可以做到这一点甚至输入你想要初始化每个条目的值,所以..
像这样的陈述
Vector<int> *vec = new Vector<int>(5,0);
Run Code Online (Sandbox Code Playgroud)
初始化vec有5个条目,每个条目为0.我可以在c#中执行相同的操作吗?
谢谢您的帮助.
我一直在阅读这篇关于尼伯斯和博弈论的小教程。
有人可以解释为什么墨西哥规则管辖游戏位置的数量吗?
请参阅: http: //en.wikipedia.org/wiki/Mex_(数学)
从最小排除序数来看,在我看来,一个状态的 Nimber 实际上是该人“无法”达到的最小状态。这对管理当前游戏的状态有何帮助?
我在维基百科上看到了一个证明,但我不明白其中的任何内容。 http://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem#Proof