gpt4 book ai didi

java - 尝试获取此 Java 代码片段的解释

转载 作者:行者123 更新时间:2023-11-30 14:26:28 25 4
gpt4 key购买 nike

如果这看起来与我编写的代码无关,但我想了解这些 Java 代码片段中发生的事情,我深表歉意(我对 Java 的理解程度无法达到可以解码的程度)。我想用 C 实现这些代码片段(我对 C 相当了解)。我在代码片段一中看到,正在进行一些哈希表搜索,就像一个数组的元素用作搜索其他数组的键一样,但无法正确获取它。

1] 片段 1。

它试图解决的问题是:查找数组的第一个覆盖前缀

例如,以下 5 元素数组 A 的第一个覆盖前缀:

A[0] = 2  A[1] = 2  A[2] = 1
A[3] = 0 A[4] = 1

为 3,因为序列 [ A[0], A[1], A[2], A[3] ] 等于 [2, 2, 1, 0],包含数组 A 中出现的所有值。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;


class FirstCovering {
int ps ( int[] A ) {
ArrayList<Integer> arrA = new ArrayList<Integer>(A.length);
for (int i = 0; i < A.length; i++) {
arrA.add(A[i]);
}

HashSet<Integer> hashSet = new HashSet<Integer>(arrA);
Iterator<Integer> iter = hashSet.iterator();

int index = 0, tempIndx=0;
while (iter.hasNext()) {

tempIndx = arrA.indexOf(iter.next());
if (tempIndx > index ) index = tempIndx;
}

return index;
}
}

2] 片段 2

class ComplementaryPairs {

private static String palindrome;
public static void main(String[] args) {

int array[] = {4,5};
int a = complementary_pairs(6, array);
System.out.println(a);

int array2[] = {4,5};
int b = complementary_pairs(4, array2);
System.out.println("b = " + b);
}

static int complementary_pairs ( int k,int[] A ) {
// find count of complementary pairs from array A.
int count = 0;
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A.length; j++) {
if (A[j] + A[i] == k) {
count++;
}
}
}
return count;
}
}

最佳答案

您对代码片段 1 的看法是正确的,尽管您可以在一次数组传递中完成此操作...

public int lastNonRepeat( int[] a )
{
HashMap map = new HashMap();
int lastIndex = 0;
for( int i = 0; i < a.length; i++ )
{
if( !map.containsKey(a[i]) )
{
map.put(a[i],true);
lastIndex = i;
}
}
return lastIndex;
}

对于片段 2,互补对部分只是检查数组中两个数字的总和是否等于 k。该方法的时间复杂度为O(n^2)。

注意:a[0] + a[0] 在此实现中有效。

关于java - 尝试获取此 Java 代码片段的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com