在阅读相关内容时,HashMap我发现它是作为存储桶数组实现的?现在这些桶总是链表吗?如果是这样,为什么它们被称为桶而不是链表?
我想从Eclipse迁移到Android Studio,但遗憾的是Eclipse崩溃了,所以我无法构建gradle-build文件,所以我重新安装了Eclipse,幸运的是我还有那些,我复制了旧文件,这些文件位于旧工作区(从崩溃前的工作区到新的工作区.
但是,当我现在构建gradle-build文件并在Android Studio中导入它时,我说我的gridlayout_v7丢失了.
你们中的任何人都知道如何解决这个问题吗?
我需要为最长的两个模式前缀/后缀匹配编码算法,其时间复杂度为O(n + m1 + m2),其中n是String的长度,m1,m2分别是pattern1和pattern2的长度.
示例:如果字符串为"OBANTAO"且Pattern1为"BANANA"且Patten2为"SIESTA",则答案为字符串的子字符串"BANTA",其由BANANA的前缀BAN和SIESTA的后缀TA组成.
谷歌的结果是:"Rabin-karp字符串搜索算法","Knuth-morris-pratt算法"和"Boyer-moore字符串搜索算法".
我能够理解以上所有3种算法,但问题在于,它们都基于"单一模式前缀/后缀匹配".我无法为两个模式前缀/后缀匹配扩展它们.
一个示例算法或搜索它的链接对我开发程序非常有帮助.
我有4个这样的字符串数组:
String[] array1 = new String{"there", "there2", "there3", "there4"};
String[] array2 = new String{"here","here2","here3"};
String[] array3 = new String{"hi","hi2"};
String[] array4 = new String{"blah","blah2","blah3"};
Run Code Online (Sandbox Code Playgroud)
我想将这些放入一个数组数组,看起来像这样:
Array myArray = [{"there", "there2", "there3", "there4"},
{"here","here2","here3"},{"hi","hi2"},
{"blah","blah2","blah3"}];
Run Code Online (Sandbox Code Playgroud)
然后就可以像这样访问它中的元素:
myArray[0][1] would equal "there2"
myArray[1][2] would equal "here3"
Run Code Online (Sandbox Code Playgroud)
希望有道理,我怎么能这样做呢?
我试过像这样制作一个ArrayList然后添加它们但它似乎不起作用
ArrayList<String[]> myArrayList = new ArrayList<String[]>();
myArrayList.add(myArray);
Run Code Online (Sandbox Code Playgroud) 这段代码:
public class Base<E> {
static void main(String[] args) {
Base<? extends Base> compound = new Base<Base>();
compound.method(new Base());
} // ^ error
void method(E e) { }
}
Run Code Online (Sandbox Code Playgroud)
给出了这样的编译错误:
Error:(4, 17) java: method method in class Base<E> cannot be applied to given types;
required: capture#1 of ? extends Base
found: Base
reason: actual argument Base cannot be converted to capture#1 of ? extends Base by method invocation conversion
Run Code Online (Sandbox Code Playgroud)
从我的理解,E成为? extends Base,延伸的东西Base.那么,为什么new Base() …
我最近遇到了如下代码:
public List<Item> getItems() {
if (items == null) {
items = new ArrayList<Item>();
}
return this.items;
}
Run Code Online (Sandbox Code Playgroud)
而且至关重要的是,没有特定的方法.
因此,如果您想添加到arrayList,则必须这样做
foo.getItems().add(...)
Run Code Online (Sandbox Code Playgroud)
而不是
foo.setItems(myArrayList)
Run Code Online (Sandbox Code Playgroud)
我之前没有见过这个成语,我不能说我喜欢它,但是当我使用mapstruct.org(顺便说一句很棒的工具)生成一些映射代码时,mapstruct处理得很好并正确生成使用getter的代码作为一个制定者.
我只是想知道 - 这是一个我不知何故错过的常见习语吗?这对我来说似乎毫无意义,但也许背后有一些智慧,我没有看到?
令M为范围内的整数[1; 10亿.
M 的分解是一组唯一的整数,其总和等于M.
如果分解仅包含奇数整数,则分解为奇数.
如果在集合的大小中没有M的其他分解,则M的分解是最大的.
写一个函数:
int[] maxOddDecomposition(int M)
Run Code Online (Sandbox Code Playgroud)
返回一个M的最大奇数分解的数组.数组中的数字应按升序排列.如果M没有任何奇数分解,则数组应为空.如果有多个正确答案,则该函数可以返回其中任何一个.
例如,M = 6有四个分解:
6 = 1 + 2 + 3
= 1 + 5
= 2 + 4
= 6
Run Code Online (Sandbox Code Playgroud)
只是1 + 5奇数分解,因此是最大奇数分解.我们应该将它返回到数组中,以便array[0] = 1和array[1] = 5.
预期的最坏情况时间和空间复杂度为O(sqrt(M)).
我尝试过的:
由于时间复杂度必须是sqrt(M),它让我想起了M算法的天真因子分解,其中我们从1迭代到sqrt(M).虽然没有进一步的想法.只有它必须非常快,只有sqrt(M)步.
所以,我做了一些例子.例如,如何找到20的答案?小于20的奇数是多少?1 + 3 + 5 + 7 + ...我们已经有16个.所以,我们可以添加4个,但是4个是偶数个.
所以,让我们用(7 + 4)= 11替换7,我们完成了:1 + 3 + 5 + 11.我注意到的是初始序列始终是floor(sqrt(M))元素,完美.让我们用伪代码编写代码:
int len = floor(sqrt(M));
int result[] …Run Code Online (Sandbox Code Playgroud) 我一直在学习C语言,并跟随Yashavant P. Kanetkar的"Let Us C".
指针章节中有一行说我们只能比较指向同一数组中元素的指针,即小于(<)和大于(>)指针.
为什么比较任意指针无效?
有一个我用java编程的游戏.游戏很简单(参见下图).有4只鸟和1只幼虫.这是一个2人游戏(AI vs Human).
当比赛开始时,幼虫开始,然后一只鸟可以移动(任何一只),然后是幼虫等......
我已经实现了MiniMax(Alpha Beta Pruning),我使用了以下的evaluate()函数(启发式函数).
让我们给板上的每个方块提供以下数字.
因此,我们的评估功能将是
h(n)=幼虫的位置值 - 鸟的位置值1 - 鸟的位置值2 - 鸟的位置值3 - 鸟的位置值4
幼虫将尝试最大化启发式值,而鸟类将尝试最小化它
例:
但是,这是一个简单而天真的启发式方法.它不会以聪明的方式行事.我是AI的初学者,我想知道如何改进这个启发式功能?
什么是好的/知情的启发式?
artificial-intelligence heuristics evaluation-function minimax alpha-beta-pruning
一只青蛙正试图到达河的另一边.最初位于银行的一侧(位置-1)并且想要到达银行的另一侧(位置N).
青蛙可以跳到1到D之间的任何距离.如果D小于N,青蛙不能直接跳跃.有一些石头可以帮助青蛙跳跃,但是只有在一定时间后水会不断减少,它们才会离开水面.只有当石头没有水时,青蛙才能跳进石头.河流中的石头在阵列A中描述,由N个整数组成.A [K]表示位置K处的石头将离开水的时间.A [K] = - 1表示该位置没有石头.目标是找到青蛙可以到达另一家银行的最早时间.
实施例D = 3,N = 6.
A [0] = 1A [1] = - 1
A [2] = 0
A [3] = 2
A [4] = 3
A [5] = 5
在时间2,3个石头将缺水,青蛙可以跳3次跳到另一个岸.
有人可以帮我解决这个问题吗?我想不出一个有效的方法来解决这个问题.
java ×5
algorithm ×3
arrays ×2
android ×1
c ×1
eclipse ×1
generics ×1
hashmap ×1
heuristics ×1
minimax ×1
pointers ×1
prefix-tree ×1
regex ×1
string ×1
suffix-tree ×1