[LeetCode] 1560. Most Visited Sector in a Circular Track

Chobby·2025년 9월 18일
2

LeetCode

목록 보기
549/650

😎풀이

  1. 방문 가능한 배열 생성
  2. rounds 순회
    2-1. 이전 지점보다 현재 지점이 더 크다면, 이전 지점부터 현재 지점 방문
    2-2. 이전 지점보다 현재 지점이 더 작다면, 현재 지점부터 끝 지점까지 방문 후 첫 번째 지점부터 이전 지점까지 방문
  3. 가장 많이 방문한 지점 배열 형태로 반환환
function mostVisited(n: number, rounds: number[]): number[] {
    const visit = new Array(n + 1).fill(0)
    const roundLen = rounds.length
    let prev = rounds[0]
    visit[prev]++
    for(let i = 1; i < roundLen; i++) {
        const cur = rounds[i]
        if(prev < cur) {
            for(let i = prev + 1; i <= cur; i++) visit[i]++
        } else if(prev > cur) {
            for(let i = prev + 1; i <= n; i++) visit[i]++
            for(let i = 1; i <= cur; i++) visit[i]++
        } else {
            for(let i = 1; i <= n; i++) visit[i]++
        }
        prev = cur
    }
    const maxVisit = Math.max(...visit)
    return visit.reduce((acc, cur, idx) => {
        if(cur < maxVisit) return acc
        return [...acc, idx]
    }, [])
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글