小编Gos*_*nko的帖子

搜索唯一的四位数以获取定义的总和

我的任务是找到四个唯一元素,其总和已定义。所以我有输入数据:n个元素的数据数组,元素可以重复,'s'是总和。我有两个循环,第一个 i 在值 [0, n-1] 中,第二个 j 在 [i+1, n] 中。我保存在 Map 中的所有唯一元素对,其中键是总和,值是由该总和组成的可能元素的集合。结果是输入数据数组的四个唯一元素的集合。我在第二个周期中执行的所有操作:

  1. 我检查 's' 和 data[i]+data[j] 之间是否已经有不同,2)如果有,我检查 data[i] 和 data[j] 是否与保存对中的元素不重合并添加到结果中。
  2. 将这对 data[i] + data [ j] 添加到具有历史记录的 Map

我在这项任务中遇到了内存限制,但我克服了它。时间限制为 O(n^2)。据我了解,我做了一些额外的操作并保存了一些不必要的数据。我创建了两个对象 Fourths 和 Pairs ,但它们内部只有原始字段,所以我认为其中没有什么交易

这是我的java代码:

public class SunForthFAIL {

  public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(reader.readLine());
    int s = Integer.parseInt(reader.readLine());
    int[] data = new int[n];
    Set<Forths> result = new HashSet<>();
    Map<Integer, Set<Pair>> history = new HashMap<>();

    StringTokenizer …
Run Code Online (Sandbox Code Playgroud)

java algorithm hashmap memory-limit

5
推荐指数
1
解决办法
93
查看次数

标签 统计

algorithm ×1

hashmap ×1

java ×1

memory-limit ×1