当前位置: 首页 > 面试题库 >

计算链接列表中的值总和

斜宁
2023-03-14
问题内容

最近在一次采访中我遇到了编程问题。

有2个链接列表。每个节点存储一个从1到9的值(指示数字的一个索引)。因此123将是链表1-> 2-> 3

任务是创建一个函数:

static LinkedListNode getSum(LinkedListNode a, LinkedListNode b)

这将返回2个链表争论中的值之和。

如果数组a为:1-> 2-> 3-> 4

数组b为:5-> 6-> 7-> 8

答案应该是:6-> 9-> 1-> 2

这是我的算法:

遍历a和b中的每个节点,获取作为整数的值并将其相加。使用这些值创建一个新的链表。

这是代码:我假设它以O(n)的复杂度运行。一次通过每个数组输入,一次创建输出数组。

有什么改善吗? 更好的算法…或代码改进

public class LinkedListNode {
        LinkedListNode next;
        int value;

    public LinkedListNode(int value) {
        this.value = value;
        this.next = null;
    }

    static int getValue(LinkedListNode node) {
        int value = node.value;
        while (node.next != null) {
            node = node.next;
            value = value * 10 + node.value;
        }
        return value;
    }

    static LinkedListNode getSum(LinkedListNode a, LinkedListNode b) {
        LinkedListNode answer = new LinkedListNode(0);
        LinkedListNode ans = answer;
        int aval = getValue(a);
        int bval = getValue(b);
        int result = aval + bval;
        while (result > 0) {
            int len = (int) Math.pow((double) 10,
                    (double) String.valueOf(result).length() - 1);
            int val = result / len;
            ans.next = new LinkedListNode(val);
            ans = ans.next;
            result = result - val*len;
            }    
        return answer.next;
    }
}

问题答案:

我针对该问题看到的其他解决方案包括通过向后遍历两个输入列表来逐步构建返回的列表,同时在转到新列表时添加每个元素。这种方式更加复杂,因为您必须添加每个元素并处理结转。

如果数组a为:1-> 2-> 3-> 4

数组b为:5-> 6-> 7-> 8

向后迭代

然后4 + 8 = 12(返回列表电流= 2)

携带1

(1)+ 3 + 7 = 11(返回列表= 1-> 2)

携带1

(1)+ 2 + 6 = 9(返回列表= 9-> 1-> 2)

1 + 5 = 6(返回列表= 6-> 9> 1-> 2)

如果列表仅是单个链接,则可以通过使用Stacks来实现LIFO性质以向后迭代,从而实现此目的。



 类似资料:
  • 我试图计算每列CSV的总和。我能够读取csv在js使用readfile方法。我也能够循环使用它,并将数据解析成对象数组。现在我只是想出一种方法来把所有的列元素加起来,这就是我正在努力的地方。我的csv对象是对象格式的数组,看起来像这样。 CSV输入如下所示: 我想补充18 19 20最终答案应该是这样的[57,518]。 到目前为止,我已经完成了这些工作,我只需要帮助来改进这一点,并在JS中按列添

  • 本文向大家介绍F# 计算列表中数字的总和,包括了F# 计算列表中数字的总和的使用技巧和注意事项,需要的朋友参考一下 示例 通过递归 上面的例子表示:“看list,它是空返回0,否则它是一个非空列表所以它可能是?。 [1],[1; 2][1; 2; 3]等,如果list是[1]然后将其绑定变量head到1并tail以[]再执行head + sumTotal tail。 执行示例: 封装上述模式的更通

  • 问题内容: 我已经在处理以下代码,但是似乎找不到一种方法来计算字谜列表中唯一值的数量。如果我只是打印出:我会得到列表的总价值,但其中包括重复项。 我试图将列表转换为集合,然后再删除掉重复项,但是还没有任何运气。 谢谢! 问题答案: 使用。仅包含唯一值:

  • 问题内容: 我的表中的一列中包含大量BLOB数据。我正在编写一个实用程序以将数据转储到文件系统。但是在转储之前,我需要检查磁盘上是否有必要的空间来导出整个表中的所有Blob字段。 请提出一种有效的方法来获取表中所有Blob字段的大小。 问题答案: 您可以使用MySQL函数。有关更多详细信息,请参见此处。

  • 问题内容: 我有一个模特 我试图这样做来计算此查询集中的总和: 此查询有什么问题?还是有其他方法可以计算列总和? 我知道这可以通过在queryset上使用for循环来完成,但是我需要一个优雅的解决方案。 问题答案: 你可能正在寻找

  • 问题内容: 我有一个表,其中包含商店中每件商品的单价和其他详细信息。 另一个包含每个订单中包含的项目的详细信息。 现在我要计算 请注意,我希望它成为表本身的一部分,而不是作为其他视图或查询。我怎样才能做到这一点?我为此研究了触发器和其他机制,但是它们是否适用于不同表中的值,尤其是在存在此类约束的情况下? 我尝试过根据另一列计算出的Column进行以下触发吗?: 但这似乎没有用 问题答案: 这是如何