2021-12-27 825. 适龄的朋友

2021-12-27  本文已影响0人  16孙一凡通工

排序加双指针
最开始的二重循环复杂度太大,跑不过数组长的实例。

Go版本:

import (
    "fmt"
)
func numFriendRequests(ages []int) int {

 sort.Ints(ages)
    n:=len(ages);
count:=0;

    i,j:=0,0;
        for k:=0;k<n;k++{
            // i看作y j看作x


           
           for{
               if i<k && !check(ages[i],ages[k]){
                   i++;
               }else{
                   break;
               }
              
           }

           if j<k{
               j=k;
           }
             for{
               if j<n &&  check(ages[j],ages[k]){
                   j++;
               }else{
                   break;
               }
            
             }
         if j>i{
            count+=j-i-1;
         }
         

        }
    
    return count;

}
func check(x int,y int) bool{
     if y*10<=x*5+70 || y>x || (y>100 && x<100){
             return false;
    }
    return true;
}
上一篇下一篇

猜你喜欢

热点阅读