小编I a*_*bot的帖子

为什么这个O(n ^ 2)代码比O(n)执行得更快?

我编写了两种方法的代码,以找出LeetCode上字符串中的第一个唯一字符.

问题陈述: 给定一个字符串,找到其中的第一个非重复字符并返回它的索引.如果它不存在,则返回-1.

样本测试案例:

s ="leetcode"返回0.

s ="loveleetcode",返回2.

方法1(O(n))(如果我错了,请纠正我):

class Solution {
    public int firstUniqChar(String s) {

        HashMap<Character,Integer> charHash = new HashMap<>();

        int res = -1;

        for (int i = 0; i < s.length(); i++) {

            Integer count = charHash.get(s.charAt(i));

            if (count == null){
                charHash.put(s.charAt(i),1);
            }
            else {
                charHash.put(s.charAt(i),count + 1);
            }
        }

        for (int i = 0; i < s.length(); i++) {

            if (charHash.get(s.charAt(i)) == 1) {
                res = i;
                break;
            }
        }

        return res;
    }
}
Run Code Online (Sandbox Code Playgroud)

方法2(O(n ^ …

java big-o time-complexity

38
推荐指数
4
解决办法
5410
查看次数

如何从Angular 7中的Firestore查询获取Observable数据?

我的服务中有方法,在其中我试图返回User对象的Observable。这是我的代码-

 constructor(private firestore: AngularFirestore,
    private db: AngularFireDatabase) { }

 /**
   * get user with given email, if not return null
   * 
   * @param email email to fetch
   */
  getUserByEmail(email: string): Observable<User> {

    var user: User;

    let userRef = this.firestore.collection("users").ref.where('email', '==', email);

    userRef.get().then(res => res.forEach(userDoc => {

      user = userDoc[0].data() as User; // since email IDs are unique, I want the 0th element.
      user.id = userDoc[0].id;

      console.log(user); // has the data

      // return user; // doesn't work, not the right thing …
Run Code Online (Sandbox Code Playgroud)

firebase typescript angular google-cloud-firestore

3
推荐指数
1
解决办法
2831
查看次数

为了在未加权图上实现Dijkstra的最短路径算法,使其在线性时间内运行,应使用哪种数据结构?

为了在未加权图上实现Dijkstra的最短路径算法以使其在线性时间内运行,要使用的数据结构为:

  1. 队列
  2. B树

我发现以下答案:

  1. 队列,因为我们可以使用广度优先搜索(BFS)算法在未加权图中找到单个源最短路径,该算法使用“队列”数据结构,时间为O(m + n)(即相对于顶点和边的数量呈线性) )

  2. 要在线性时间内实现它,就需要一个最小堆,因为如果我们在此处删除一个最小堆中的节点,则将不需要任何时间进行调整,因为所有r具有相同的权重,因此删除一个节点需要O(1)。 n-1个节点,它将是O(n)。

有人可以解释哪个是正确的答案吗?

algorithm queue stack graph dijkstra

0
推荐指数
1
解决办法
6064
查看次数