LeetCode 849. 到最近的人的最大距离
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 849. 到最近的人的最大距离
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。
至少有一個(gè)空座位,且至少有一人坐在座位上。
亞歷克斯希望坐在一個(gè)能夠使他與離他最近的人之間的距離達(dá)到最大化的座位上。
返回他到離他最近的人的最大距離。
示例 1: 輸入:[1,0,0,0,1,0,1] 輸出:2 解釋: 如果亞歷克斯坐在第二個(gè)空位(seats[2])上,他到離他最近的人的距離為 2 。 如果亞歷克斯坐在其它任何一個(gè)空位上,他到離他最近的人的距離為 1 。 因此,他到離他最近的人的最大距離是 2 。 示例 2: 輸入:[1,0,0,0] 輸出:3 解釋: 如果亞歷克斯坐在最后一個(gè)座位上,他離最近的人有 3 個(gè)座位遠(yuǎn)。 這是可能的最大距離,所以答案是 3 。提示: 1 <= seats.length <= 20000 seats 中只含有 0 和 1,至少有一個(gè) 0,且至少有一個(gè) 1。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximize-distance-to-closest-person
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
class Solution { public:int maxDistToClosest(vector<int>& seats) {int N = seats.size(), i, prev = 0, maxDis = -1, mid;for(i = 0; i < N; i++) {if(seats[i])//有人{mid = (prev+i)/2; //中間位置if(seats[prev]) //前面有人maxDis = max(maxDis,min(mid-prev,i-mid));else //i是第一個(gè)人maxDis = i;prev = i; //更新prev}else if(i == N-1 && !seats[i])//最后一個(gè)位置每人maxDis = max(maxDis,i-prev);}return maxDis;} };總結(jié)
以上是生活随笔為你收集整理的LeetCode 849. 到最近的人的最大距离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 652. 寻找重复的子
- 下一篇: 剑指Offer - 面试题3. 数组中重