剑指Offer:数字在排序数组中出现的次数Java/Python

1.题目描述

统计一个数字在排序数组中出现的次数。

2.算法描述

数组是有序的。
初始化 l e f t = 1 , r i g h t = 1 left = -1, right = -1
从左到右找数字 k k 第一次出现的位置 l e f t left 。如果 l e f t = = 1 left == -1 ,说明数组中没有这个数字k,返回0。
从右到左找数字 k k 第一次出现的位置 r i g h t right .
返回 r i g h t l e f t + 1 right-left+1

3.代码描述

3.1.Java代码

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        int l = -1;
        int r = -1;
        for(int i=0;i<array.length;i++)
            if(array[i] == k){
                l = i;
                break;
            }
        if(l == -1)
            return 0;
        for(int j=array.length-1;j>=0;j--)
            if(array[j] == k){
                r = j;
                break;
            }
        return r- l + 1;
    }
}

3.2.Python代码

#人生苦短  我用Python
# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        return data.count(k)

猜你喜欢

转载自blog.csdn.net/qq_37888254/article/details/89874884