zoukankan      html  css  js  c++  java
  • 244. Shortest Word Distance II

    因为要多次查询,每次都遍历肯定不行,所以要保存信息。

    最直接的就是保存每个string出现的位置,查询A,B的时候就直接比较他们所有的出现INDEX中最小的情况。

    有一点需要注意的是,A出现的位置和B出现的位置都是按顺序添加的,从小到大。
    假设M是A出现的一个位置,N是B出现的一个位置,我们首先更新M和N的距离情况。然后看M和N谁小,小的只有变大才有可能得到更符合要求的结果(距离更小), 所以只改变当前INDEX小的string,找到它的下一次出现位置。。

    public class WordDistance 
    {
        Map<String, List<Integer>> map;
        int length;
        public WordDistance(String[] words) 
        {
            length = words.length;
            if(length == 0) return;
            map = new HashMap<String,List<Integer>>();
            
            for(int i = 0; i < words.length;i++)
            {
                if(map.containsKey(words[i]))
                {
                    map.get(words[i]).add(i);
                }
                else
                {
                    List<Integer> tempList = new ArrayList<>();
                    tempList.add(i);
                    map.put(words[i],new ArrayList<>(tempList));
                }
            }
        }
    
        public int shortest(String word1, String word2) 
        {
            
            List<Integer> list1 = map.get(word1);
            List<Integer> list2 = map.get(word2);
            
            int l = 0;
            int r = 0;
            int res = Math.abs(list1.get(l) - list2.get(r));
            
            while(l < list1.size() && r < list2.size())
            {
                res = Math.min(res,Math.abs(list1.get(l) - list2.get(r)));
                if(res == 1) return 1;
                
                if(list1.get(l) < list2.get(r)) l++;
                else r++;
                
            }
            
            return res;
      
        }
    }
    
    

    这个题卡了一会……一开始想的是建图。。最短路径,不知道怎么想的。。

  • 相关阅读:
    关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
    关于用Cocos2d-x.3.10运行别人游戏项目的步骤
    jq 获取select text
    one thinkphp 文档
    tp 大致执行流程
    mysql 命令行导入mysql语句
    htmt 5 素材
    er图 画图工具
    php zend studio 如何导入已经存在的项目
    php 获取当前域名
  • 原文地址:https://www.cnblogs.com/reboot329/p/5968418.html
Copyright © 2011-2022 走看看