📌  相关文章
📜  检查数组中每个大小为k的段中是否存在键

📅  最后修改于: 2021-04-24 04:19:08             🧑  作者: Mango

给定一个数组arr [],数组的大小为n,另一个为键x,并给你一个段大小k。任务是发现密钥x存在于arr []中大小为k的每个段中。
例子:

这个想法很简单,我们考虑大小为k的每个段,然后检查窗口中是否存在x。我们需要仔细处理最后一部分。
下面是上述方法的实现:

C++
// C++ code to find the  every segment size of
// array have a search key x
#include 
using namespace std;
 
bool findxinkindowSize(int arr[], int x, int k, int n)
{
    int i;
    for (i = 0; i < n; i = i + k) {
 
        // Search x in segment starting
        // from index i.
        int j;
        for (j = 0; j < k; j++)
            if (arr[i + j] == x)
                break;
 
        // If loop didn't break
        if (j == k)
           return false;
    }
 
    // If n is a multiple of k
    if (i == n)
       return true;
 
    // Check in last segment if n
    // is not multiple of k.
    int j;
    for (j=i-k; j


Java
// Java code to find the every
// segment size of array have
// a search key x
import java.util.*;
class GFG {
    static boolean findxinkindowSize(int N, int[] arr,
                                     int x, int k)
    {
        int i;
        boolean b = false;
       
        // Iterate from 0 to N - 1
        for (i = 0; i < N; i = i + k) {
           
            // Iterate from 0 to k - 1
            for (int j = 0; j < k; j++) {
                if (i + j < N && arr[i + j] == x)
                    break;
 
                if (j == k)
                    return false;
                if (i + j >= N)
                    return false;
            }
        }
        if (i >= N)
            return true;
        else
            return b;
    }
 
    // Driver Code
    public static void main(String args[])
    {
        int arr[] = new int[] { 3, 5, 2, 4,  9,  3,
                                1, 7, 3, 11, 12, 3 };
        int x = 3, k = 3;
        int n = arr.length;
        if (findxinkindowSize(n, arr, x, k))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by Vivek258709


Python 3
# Python 3 program to find
# the every segment size of
# array have a search key x
 
def findxinkindowSize(arr, x, k, n) :
 
    i = 0
    while i < n :
 
        j = 0
         
        # Search x in segment
        # starting from index i
        while j < k :
             
            if arr[i + j] == x :
                break
             
            j += 1
 
        # If loop didn't break
        if j == k :
            return False
 
        i += k
         
    # If n is a multiple of k    
    if i == n :
        return True
 
    j = i - k
     
    # Check in last segment if n
    # is not multiple of k.
    while j < n :
        if arr[j] == x :
            break
 
        j += 1
 
    if j == n :
        return False
 
    return True
 
# Driver Code
if __name__ == "__main__" :
 
    arr = [ 3, 5, 2, 4, 9, 3,
            1, 7, 3, 11, 12, 3 ]
    x, k = 3, 3
    n = len(arr)
     
    if (findxinkindowSize(arr, x, k, n)) :
        print("Yes")
    else :
        print("No")
         
# This code is contributed
# by ANKITRAI1


C#
// C# code to find the every
// segment size of array have
// a search key x
using System;
 
class GFG
{
static bool findxinkindowSize(int[] arr, int x,
                              int k, int n)
{
    int i;
    for (i = 0; i < n; i = i + k)
    {
 
        // Search x in segment
        // starting from index i.
        int j;
        for (j = 0; j < k; j++)
            if (arr[i + j] == x)
                break;
 
        // If loop didn't break
        if (j == k)
        return false;
    }
 
    // If n is a multiple of k
    if (i == n)
    return true;
 
    // Check in last segment if
    // n is not multiple of k.
    int l;
    for (l = i - k; l < n; l++)
    if (arr[l] == x)
        break;
    if (l == n)
    return false;
     
    return true;
}
 
// Driver Code
public static void Main()
{
    int[] arr = new int[] {3, 5, 2, 4, 9, 3,
                         1, 7, 3, 11, 12, 3};
    int x = 3, k = 3;
    int n = arr.Length;
    if (findxinkindowSize(arr, x, k, n))
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code is contributed by ChitraNayal


PHP


Javascript


输出:
Yes

时间复杂度:O(n)