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

    Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list.

    For example,
    Assume that words = ["practice", "makes", "perfect", "coding", "makes"].

    Given word1 = “coding”word2 = “practice”, return 3.
    Given word1 = "makes"word2 = "coding", return 1.

    Note:
    You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.

    此题开始的时候没有想出直接用数组该怎么做,后来用了hashmap做的,通过了:

    public class Solution {

        public int shortestDistance(String[] words, String word1, String word2) {

            int min = Integer.MAX_VALUE;

            Map<String,Integer> map =new HashMap<>();

            int w1 = Integer.MIN_VALUE;

            int w2 = Integer.MIN_VALUE;

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

                map.put(words[i],i);

                if(map.containsKey(word1)){

                    w1 = map.get(word1);

                }

                if(map.containsKey(word2)){

                    w2 = map.get(word2);

                }

                if(w1!=Integer.MIN_VALUE&&w2!=Integer.MIN_VALUE){

                    min = Math.min(min,Math.abs(w1-w2));

                }

     

            }

            return min==Integer.MAX_VALUE?-1:min;

        }

    }

    看了答案,直接用数组就可以直接解出来,代码如下:

    public class Solution {

        public int shortestDistance(String[] words, String word1, String word2) {

            int min = Integer.MAX_VALUE;

            int p1 = -1;

            int p2 = -1;

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

                if(words[i].equals(word1)) p1 = i;

                if(words[i].equals(word2)) p2 = i;

                if(p1!=-1&&p2!=-1){

                    min = Math.min(min,Math.abs(p1-p2));

                }

            }

            return min;

        }

    }

    这时双指针的题目,但是不清楚是不是隶属于greedy题。

  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6360818.html
Copyright © 2011-2022 走看看