Leetcode 알고리즘 자바 전체 해답 -- 24. 두 개의 교환 링크 의 노드
글 목록
하나의 링크 를 지정 하고 두 개의 인접 한 노드 를 교환 하 며 교환 후의 링크 를 되 돌려 줍 니 다.
예시:
1->2->3->4, 2->1->4->3.
:
。
, 。
생각.
세 개의 변수 저장 소 설명
cur – 현재 node, preCur – 이전 node, preDoubleCur – 이전 node 의 이전 node
순환 횟수 num, 짝수 일 때 교환
순환
시간 복잡 도 / 공간 복잡 도: n / 1
데이터 가 1, 2, 3, 4, 5, 6 이 라 고 가정 하면 4 로 순환 되 었 습 니 다.
cur: val = 4,next=5
preCur: val = 3,next=4
preDoubleCur: val = 2,next=3
교환 방식:
ListNode tmpCur = cur;
cur = cur.next;
preDoubleCur.next = tmpCur;
tmpCur.next = preCur;
preCur.next = cur;
결실
70% 가 넘 는 테스트 사례
시간 복잡 도 / 공간 복잡 도: n / 1
총결산
코드
나의 답
/**************************************
*
, , 。
:
1->2->3->4, 2->1->4->3.
:
。
, 。
**************************************/
/**************************************
*
* :
* 1. cur-- node,preCur-- node,preDoubleCur-- node node
* num,
* ,
*
* / : n/1
* ,1,2,3,4,5,6, 4
* cur: val = 4,next=5
* preCur: val = 3,next=4
* preDoubleCur: val = 2,next=3
*
* :
* ListNode tmpCur = cur;
* cur = cur.next;
*
* preDoubleCur.next = tmpCur;
* tmpCur.next = preCur;
* preCur.next = cur;
*
*
*
*
* 70%
* / : n/1
* :
*
* :
*
* ***********************************/
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode result = head.next;
ListNode cur = head;
ListNode preCur = head;
ListNode preDoubleCur = head;
int num = 0;
while (cur != null) {
num++;
if (num % 2 == 0) {
ListNode tmpCur = cur;
cur = cur.next;
preDoubleCur.next = tmpCur;
tmpCur.next = preCur;
preCur.next = cur;
continue;
}
preDoubleCur = preCur;
preCur = cur;
cur = cur.next;
}
return result;
}
사내 들 의 답
public ListNode better(ListNode head) {
ListNode mid;
ListNode ans;
if (head == null || head.next == null) {
return head;
}
ans = head.next;
while (true) {
mid = head.next;
head.next = head.next.next;
mid.next = head;
if (head.next != null && head.next.next != null) {
mid = head.next;
head.next = head.next.next;
head = mid;
} else {
head = head.next;
break;
}
}
return ans;
}
테스트 용례
@Test
public void test024() {
//
ListNode listNode11 = new ListNode(1);
ListNode listNode12 = new ListNode(2);
ListNode listNode13 = new ListNode(3);
ListNode listNode14 = new ListNode(4);
listNode11.next = listNode12;
listNode12.next = listNode13;
listNode13.next = listNode14;
//
ListNode expResult1 = new ListNode(2);
ListNode expResult12 = new ListNode(1);
ListNode expResult13 = new ListNode(4);
ListNode expResult15 = new ListNode(3);
expResult1.next = expResult12;
expResult12.next = expResult13;
expResult13.next = expResult15;
Solution024 solution024 = new Solution024();
ListNode result1 = solution024.swapPairs(listNode11);
Assert.assertEquals(expResult1.toArray(), result1.toArray());
}
기타
코드 위탁 관리 코드 클 라 우 드 주소:https://gitee.com/lizhaoandroid/LeetCodeAll.git
다른 내용 을 보면 칼럼 이나 제 블 로 그 를 클릭 할 수 있 습 니 다.https://blog.csdn.net/cmqwan
"사내 들 의 답" 라벨 은 leetcode 에서 왔 습 니 다. 권리 침해 에 대해 서 는 저 에 게 연락 하여 삭제 해 주 십시오.
문의 사항 이 있 으 시 면 연락 주세요. 연락처: QQ 3060507060
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.