LeetCode (링크) - 725. 분할 링크
6275 단어 알고리즘
헤드 노드 를 루트 로 하 는 링크 를 지정 하고 링크 를 k 개의 연속 부분 으로 구분 하 는 함 수 를 만 듭 니 다.각 부분의 길 이 는 가능 한 한 같 아야 한다. 임의의 두 부분의 길이 차 이 는 1 을 초과 해 서 는 안 된다. 즉, 일부 부분 은 null 일 수 있다.이 k 부분 은 링크 에 나타 난 순서에 따라 출력 해 야 하고 앞 에 있 는 부분의 길 이 는 뒤의 길이 보다 크 거나 같 아야 한다.위 규칙 에 맞 는 링크 목록 을 되 돌려 줍 니 다.
예: 1 - > 2 - > 3 - > 4, k = 5 / / 5 결과 [1], [2], [3], [4], null]
예제 1: 입력: root = [1, 2, 3], k = 5 출력: [1], [2], [3], [], [] 설명: 입 출력 각 부분 은 배열 이 아 닌 링크 여야 합 니 다.예 를 들 어 입력 한 노드 루트 의 val = 1, root. next. val = 2, \ root. next. next. val = 3, 그리고 root. next. next. next = null.첫 번 째 출력 output [0] 은 output [0]. val = 1, output [0]. next = null 입 니 다.마지막 요소 output [4] 는 null 입 니 다. 마지막 부분 은 빈 링크 입 니 다.
예제 2: 입력: root = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], k = 3 출력: [1, 2, 3, 4], [5, 6, 7], [8, 9, 10] 설명: 입력 은 몇 개의 연속 적 인 부분 으로 나 뉘 었 고 각 부분의 길이 차 이 는 1 을 초과 하지 않 았 다. 앞부분 의 길 이 는 뒷부분 의 길이 보다 크다.
생각:
1. 먼저 링크 를 옮 겨 다 니 며 개수 count 2. count / k 는 각 부분 에 몇 개가 있 을 수 있 는 지, count% k 는 앞의 몇 부분 에 하나 가 더 있 을 수 있 음 을 나타 낸다. 3. 2 층 순환 을 이용 하여 링크 배열 을 옮 겨 다 닐 수 있다.
코드:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode[] splitListToParts(ListNode root, int k) {
ListNode head = root;
int count = 0; //
while(head != null) {
count++;
head = head.next;
}
int p = count/k; //
int rem = count%k; //
ListNode[] ans = new ListNode[k]; //
head = root;
for(int i = 0; i < k; i++) {
ListNode tmp = new ListNode(-1);
ListNode write = tmp;
for(int j = 0; j < p+(i<rem?1:0); j++) { // rem
write.next = new ListNode(head.val);
write = write.next;
head = head.next;
}
ans[i] = tmp.next;
}
return ans;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.