leetcode 第1583题-统计不开心的朋友

package leetcode

func UnhappyFriends(n int, preferences [][]int, pairs [][]int) int {
   m := make(map[int]int, n)
   for _, pair := range pairs {
       m[pair[0]] = pair[1]
       m[pair[1]] = pair[0]
   }

   var judge func(x, y int) bool //判断是否不开心
   judge = func(x, y int) bool {
       //遍历x的朋友列表,依次当作u
       for _, p1 := range preferences[x] {
           u := p1
           if u == y {
               return false
           }
           //x 与 u 的亲近程度胜过 x 与 y
           v := m[u]
           //判断u 与 x 的亲近程度是否胜过 u 与 v
           for _, p := range preferences[u] {
               if p == x {
                   return true //u 与 x 的亲近程度胜过 u 与 v
               } else if p == v {
                   break
               } else {
                   continue
               }
           }
       }

       return false
   }
   var count int
   for _, pair := range pairs {
       if judge(pair[0], pair[1]) {
           count++
       }
       if judge(pair[1], pair[0]) {
           count++
       }
   }

   return count
}


你可能感兴趣的:(leetcode 第1583题-统计不开心的朋友)