注意,题目要求要保持两部分的相对顺序,所以,用交换是不行的. import java.util.HashSet; import java.util.Set; class ListNode{ int val; ListNode next; ListNode(int x){ val = x; } } public class Solution{ public static void main(String[] args){ ListNode head = new ListNode(3); head.…
题目: 链表划分 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 样例 给定链表 1->4->3->2->5->2->null,并且 x=3 返回 1->2->2->4->3->5->null 解题: 上面返回的结果好多不对的应该是: 1->2->2->3->4->5->null 想了好久不知道怎么搞,九章看到的程序,竟然搞…
[002-Add Two Numbers (单链表表示的两个数相加)] 原题 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. In…
题意:交换链表中每两个相邻节点,不能修改节点的val值. 分析:递归.如果以第三个结点为头结点的链表已经两两交换完毕(这一步递归实现---swapPairs(head -> next -> next)),则接下来,只需交换前两个节点,再将第一个节点的next指向“以第三个结点为头结点的链表两两交换后”的链表. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L…
Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和.您可以假设除了数字 0 之外,这两个数都不会以 0 开头.示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 链接:https://le…
Given a linked list and two values v1 and v2. Swap the two nodes in the linked list with values v1 and v2. It's guaranteed there is no duplicate values in the linked list. If v1 or v2 does not exist in the given linked list, do nothing. Notice You sh…
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. #include <stdio.h>#include <stdlib.h> struct grade {    int score;    struct grade *next;   };typedef struct grade NODE;  //typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.                             //使用typedef目的一般有两个,一个是给…
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. demo1 // lianbiao.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> struct grade { int score; struct grade *next; }; typedef stru…
方法一和方法二的执行效率,可以大致的计算时间复杂度加以对比,方法一优于方法二   1. 方法一: 思路: 1. 新创建一个链表节点头,假设这里就叫 head3: 2. 因为另外两个链表都为单调递增,所以每次对比这两个链表的第一个节点的值,取出值较小的节点,把其放在 head3 链表的末尾,并在原链表中删除被取出的节点: 3. 直到把原两链表的其中一个链表的所有节点都取走: 4. 把还存有节点的链表整个的追加到 head3 链表的结尾,到此便形成一个节点值从小到大排列的 head3 链表: 代码实…
Swap Nodes in Pairs 描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 思路 该题属于基本的链表操作题. 设置一个虚拟头结点dummyHead 设置需要交换的两个节点分别为node1.node2,同时设置node2的下一个节点next 在这一轮操作中 将nod…