交换链表当中两个节点-LintCode
来源:互联网 发布:上海大学网络教学平台 编辑:程序博客网 时间:2024/05/29 17:42
给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。
注意事项:
你需要交换两个节点而不是改变节点的权值
样例:
给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4
返回结果 1->4->3->2->null。
#ifndef C511_H#define C511_H#include<iostream>using namespace std;class ListNode{public: int val; ListNode *next; ListNode(int val) { this->val = val; this->next = NULL; }};class Solution {public: /* * @param head: a ListNode * @param v1: An integer * @param v2: An integer * @return: a new head of singly-linked list */ ListNode * swapNodes(ListNode * head, int v1, int v2) { // write your code here if (head == NULL) return NULL; ListNode *start = new ListNode(-1); start->next = head; ListNode *prev1 = start; ListNode *prev2 = start; ListNode *pv1 = head; ListNode *pv2 = head; while (pv1 != NULL) { if (pv1->val == v1) break; pv1 = pv1->next; prev1 = prev1->next; } while (pv2 != NULL) { if (pv2->val == v2) break; pv2 = pv2->next; prev2 = prev2->next; } if (pv1 == NULL || pv2 == NULL) return head; if (pv1->next == pv2) { pv1->next = pv1->next->next; prev1->next = pv2; pv2->next = pv1; return start->next; } if (pv2->next == pv1) { pv2->next = pv2->next->next; prev2->next = pv1; pv1->next = pv2; return start->next; } ListNode *tmp = pv2->next; prev1->next = pv2; pv2->next = pv1->next; prev2->next = pv1; pv1->next = tmp; return start->next; }};#endif
阅读全文
0 0
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- LintCode-交换链表当中两个节点
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- 交换链表当中两个节点-LintCode
- lintcode(511)交换链表当中两个节点
- LINTCODE——交换链表当中两个节点
- 交换链表当中两个节点
- 511- 交换链表当中两个节点
- Java实现-交换链表当中的两个节点
- 511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)
- LintCode:两两交换链表中的节点
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- Lintcode 451.两两交换链表中的节点
- lintcode——两两交换链表中的节点
- LintCode-两两交换链表中的节点
- matlab 画图函数plot
- FlexboxLayout UI布局
- 用VIM设置UTF-8编码的BOM标记
- Java并发编程实战笔记(6)-取消与关闭
- 图像基础18 人脸辨识——人脸定位
- 交换链表当中两个节点-LintCode
- java定时器
- Spark写入Parquet,暴露JDBC引擎,实现准实时SQL查询
- openfire
- 定投的误区
- 灰指甲的治疗方法
- spring + springMVC +mybatis+ maven +redis + mysql 框架整合
- Android Studio升级后Could not find com.tencent.mm.SevenZip:1.2.0
- Android 开发实战 控件设置及页面跳转