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
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容