当前位置: 首页 > 知识库问答 >
问题:

如何在一个操作中(同时)为数据结构的所有元素设置一个值

西门淮晨
2023-03-14

我有一个面试问题。写入包含以下方法的类UnlimitedArrayInt。每种方法的复杂性应为O[1]:void setAll(int number)–所有整数都设置为给定的数字;*int get(int index)–返回给定索引处的数字。索引可以是任何正整数值;*voidset(int index,int number)在给定索引处设置编号。数组不受限制,所以它可以是任何正整数值;数字可以是任何整数值。正如他们告诉我的那个样,这个解决方案不是基于正则数组的。那么,有谁能解释一下什么样的数据结构更适合使用,以及如何实现复杂度为O(1)的setAll方法,因为我认为它总是复杂度为O(n),因为我们需要迭代所有索引来设置任何数据结构的所有元素的新值。

共有1个答案

许丁雷
2023-03-14

您需要使用Map和一个您将在set中使用的公共值。如果用户设置值,Map将充当覆盖。

以下内容:

public class UnlimitedArrayInt {
    Map<Integer, Integer> values;
    int commonValue;//default value to return if not found

    public UnlimitedArrayInt() {
        values = new HashMap<>();
        commonValue = -1;
    }

    /**
        use common value that you are going to use and at the same time reset all the instance of map (GC would clear all the reference at the back and this is a trade off of clear vs new instance that am making). Runs in O(1) time.
    */
    public void setAll(int number) {
        commonValue = number;
        values = new HashMap<>();
    }
    /**
        return if value was set else return the common value across your data structure if any was used. Else return -1. Runs in O(1) time.
     */
    public int get(int index) {
         return values.getOrDefault(index, commonValue);
    }

    /**
        Override the existing common value which would take the priority over common value. Runs in O(1) time.
    */
    public set(int index, int number) {
         return values.put(index, number);
    }
}
 类似资料:
  • 如何使用JavaScript同时设置多个属性?不幸的是,我不能在这个项目中使用像jQuery这样的框架。以下是我现在拥有的:

  • 我想用Java做一个小游戏swing,但我想不出一个解决问题的好方法。我有两个阵列,第一个是板条箱 第二个是Tile对象。 我想检查一下是否所有的板条箱都放在瓷砖上。我的意思是,不管哪个盒子在哪个瓷砖上,都有几个盒子,几个瓷砖,每个盒子都应该放在一块瓷砖上,不管哪个盒子在哪个瓷砖上。在游戏中,玩家行走并移动箱子,所以他们的坐标会发生变化。瓷砖坐标不变(如果可能有帮助的话)。这将是我的停止状态。当板

  • 问题内容: 我想了解 从另一个数组的所有元素过滤数组 的最佳方法。我尝试使用过滤器功能,但是如何给它提供要删除的值并没有解决。 就像是: 如果过滤器功能没有用,您将如何实现呢? 编辑:我检查了可能重复的问题,它可能对那些容易理解javascript的人有用。选中的答案很容易。 问题答案: 您可以使用函数的参数来避免将过滤器数组存储在全局变量中。

  • 我想了解从另一个数组的所有元素中筛选一个数组的最佳方法。我尝试了筛选函数,但我不知道如何给它我想要删除的值。 类似内容: 如果过滤器功能不是有用的,你将如何实现它? 编辑:我检查了可能重复的问题,对于那些容易理解javascript的人来说,它可能很有用。如果答案被检查为好,事情就会变得简单。

  • 我试图一次为一个元素设置多个属性。我找到了这个答案,以及对那个答案的这个评论。在那里的JSFiddle中,他不使用字符串作为属性名,与使用字符串的答案相反。 我在第7行添加了以下内容: 但是我得到了以下错误: 未捕获的引用Error:未定义html 评论JSFiddle(已编辑)

  • 我有一个2-d NumPy阵列,看起来像这样: 我想修改它,使每一行都由所有0组成,除了第一个非零条目。如果一开始都是0,我们不会改变任何东西。 我可以这样做: 但这很难看,而且没有矢量化。对如何将其矢量化有什么建议吗? 谢谢