题目描述:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。 i c } m l p a o s r s f } f } f } t u u u F n n n F o c c c o r v l l i } r v v i } l l i } } } r v v i } l l i } } } r u 3 f a e e f e g a a f e e f e e e g a a f e e f e e e n 8 i r t t t e r r t t l l t e r r t t l l t d S n f u t s m s s u t s m s s u a o d n f l i r r F s e t r m m i i } } e e e s r L s e t r m m i i } } e s e e r t l N i a s / e n i t n a e i i d f e n t n a t n a e i i d f e t n n i u u = s s r 没 t r a d r t d d N l i d { a s a d r t d d N l i a { d o t m r t t 找 u l s r t u N u m s f r g t r t u N u m s f r g n i s n t 到 r a t t = r = u m i r e e = t e K t = r = u m i r e s t = e o O u = = n s K > n m d e n m t ( > n m d e t m t n f m = = t ( = e ( = t { d i m = F _ = e ( = t { a i = m L K s g - _ n e - s = = = u d i i n e - s = = = u r d i a { ( g e - 1 - s d n 1 t = r = N d m r n s d n 1 t = r t N m d s _ e t 1 n t 1 d a n k n u i s u t 1 d a n k n u i t t L f u a r u 0 m m - d t m a r u e = m d - K n F a i m r { t m { m i K s r { t m { n m ( u i s s s t s i d > 1 + ( : t s d i m < + 1 & m r t r : 1 + [ d & 1 + [ d i n s s K l t m - k 1 n i m d k 1 u : t ( a i e i ( u n e i m K & s + n n d m 1 { m o n d + { s [ ( n t o d ] i s u d ] ( , I & , 1 u ) d , t ) m 1 n n = t i k t , k = / > k [ / d , ] , [ , I , k - I 2 0 n 2 < s _ , 0 1 n s t t , t & t ] e a k 0 { ] & a , n r : , n , r _ d t . _ n t , I n c u , k & n . o k m : & e t c u : s e n ) o n [ n I n d u t I m d n u ) n - n i ) t m t 1 t d , s - ) , _ [ I 1 _ - m n ) s i t s 1 t d t ] a + { a r 1 r ! t ] t = 1 1 : ! : k = ) I I n k n { t ) t , , _ { _ e e n n d d 1 1 : : I I n n t t ) ) I I n n t t { { 算法思想:如果不考虑数字会重复,那就错了。实际上就是topK的变种题,而且这个K要自己来求,实际解法是FirstK+LastK。 github地址:https://github.com/cubegao/LeetCode