面试题:
给定一个int array A 和一个integer k。return 一个int[] B such that B[i] = min{A[i], A[i + 1], .... A[i +k -1]}.
题目没要求复杂度,所以我用最直接的方式做的。c#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace leetcode
{
class findmin
{
public int FindMin(int[] arr,int i,int k)
{
int min = arr[i];
for (int m = i; m < i + k;m++ )
{
if (arr[m] < min) min = arr[m];
}
return min;
}
public int[] minArray(int[] A, int k)
{
int[] B = null;
if (A != null && k > 0&&k<A.Length)
{
B=new int[A.Length-k+1];
for (int i = 0; i <= A.Length - k; i++)
{
B[i] = FindMin(A, i, k);
}
}
return B;
}
public static void Main(String[] args){
int[] A={1,13,4,51,2,3,4,7,8,3,11,22,31};
// int[] A = { 1, 3, 5, 2, 4, 6, 8 };
findmin f=new findmin();
int k = 4;
int[] B = f.minArray(A, k);
for (int i = 0; i < B.Length; i++)
Console.Out.WriteLine(B[i]);
Console.ReadKey();
}
}
}