找车位
标题:找车位 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限
停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。
为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str = input.next();
String[] strings = str.split(",");
List<Integer> parkingList = new ArrayList<>();
for (String num : strings) {
parkingList.add(Integer.parseInt(num));
}
List<Integer> canParkingList = new ArrayList<>();
for(int i =0;i<parkingList.size();i++){
if(parkingList.get(i)==0){
canParkingList.add(i);
}
}
int maxLength = 0;
for (int index : canParkingList) {
int num = 100;
for (int nIndex=0 ;nIndex<parkingList.size();nIndex++) {
if (parkingList.get(nIndex) == 0) {
continue;
}
int m = index > nIndex ? index - nIndex : nIndex - index;
num = num > m ? m : num;
}
maxLength = maxLength > num ?maxLength:num;
}
System.out.println(maxLength);
}
}
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 105;
int main()
{
int a[maxn], pre[maxn], drx[maxn];
string s;
while (cin>>s)
{
int idx = 0;
for (int i = 0; i < s.length(); i++)
{
if (s[i] >= '0'&&s[i]<='9')
{
a[idx++] = s[i] - '0';
}
}
int last = -1;
for (int i = 0; i < idx; i++)
{
if (last != -1)
{
pre[i] = i - last;
}
else
{
pre[i] = maxn;
}
if (a[i] == 1)
{
last = i;
}
}
last = -1;
for (int i = idx - 1; i >= 0; i--)
{
if (last != -1)
{
drx[i] = last-i;
}
else
{
drx[i] = maxn;
}
if (a[i] == 1)
{
last = i;
}
}
int ans = 0;
for (int i = 0; i < idx; i++)
{
if (a[i] == 1) continue;
int x = std::min(pre[i], drx[i]);
if (x > ans)
{
ans = x;
}
}
cout << ans << endl;
}
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main() {
string in;
while (cin >> in) {
int len = (in.length() + 1) / 2;
vector<int>disl(len, 101);
vector<int>disr(len, 101);
int dis = 101;
for (int i = 0; i < len; ++i) {
if (in[i * 2] == '1')dis = 1;
else if (in[i * 2] == '0') {
disl[i] = dis;
dis++;
}
}
dis=101;
for (int i = len - 1; i >= 0; --i) {
if (in[i * 2] == '1')dis = 1;
else if (in[i * 2] == '0') {
disr[i] = dis;
dis++;
}
}
int ma = 1;
for (int i = 0; i < len; ++i) {
int temp = min(disl[i], disr[i]);
if(temp!=101)ma = max(ma, temp);
}
cout << ma << endl;
}
return 0;
}
小米集团公司福利 866人发布
